Skip to content

Commit

Permalink
Add deprecated_safe feature gate and attribute, cc #94978
Browse files Browse the repository at this point in the history
  • Loading branch information
User1785604260 committed Mar 15, 2022
1 parent 83460d5 commit e4f1179
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 0 deletions.
2 changes: 2 additions & 0 deletions compiler/rustc_feature/src/active.rs
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,8 @@ declare_features! (
(active, default_alloc_error_handler, "1.48.0", Some(66741), None),
/// Allows default type parameters to influence type inference.
(active, default_type_parameter_fallback, "1.3.0", Some(27336), None),
/// Allows using `#[deprecated_safe]` to deprecate the safeness of a function or trait
(active, deprecated_safe, "1.61.0", Some(94978), None),
/// Allows having using `suggestion` in the `#[deprecated]` attribute.
(active, deprecated_suggestion, "1.61.0", Some(94785), None),
/// Allows `#[derive(Default)]` and `#[default]` on enums.
Expand Down
5 changes: 5 additions & 0 deletions compiler/rustc_feature/src/builtin_attrs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -452,6 +452,11 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
"`default_method_body_is_const` is a temporary placeholder for declaring default bodies \
as `const`, which may be removed or renamed in the future."
),
// lang-team MCP 147
gated!(
deprecated_safe, Normal, template!(List: r#"since = "version", note = "...""#), ErrorFollowing,
experimental!(deprecated_safe),
),

// ==========================================================================
// Internal attributes: Stability, deprecation, and unsafe:
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_span/src/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -563,6 +563,7 @@ symbols! {
delay_span_bug_from_inside_query,
deny,
deprecated,
deprecated_safe,
deprecated_suggestion,
deref,
deref_method,
Expand Down
7 changes: 7 additions & 0 deletions src/test/ui/feature-gates/feature-gate-deprecated_safe.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#[deprecated_safe(since = "TBD", note = "...")] //~ ERROR: the `#[deprecated_safe]` attribute is an experimental feature
unsafe fn deprecated_safe_fn() {}

#[deprecated_safe(since = "TBD", note = "...")] //~ ERROR: the `#[deprecated_safe]` attribute is an experimental feature
unsafe trait DeprecatedSafeTrait {}

fn main() {}
21 changes: 21 additions & 0 deletions src/test/ui/feature-gates/feature-gate-deprecated_safe.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
error[E0658]: the `#[deprecated_safe]` attribute is an experimental feature
--> $DIR/feature-gate-deprecated_safe.rs:1:1
|
LL | #[deprecated_safe(since = "TBD", note = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #94978 <https://github.com/rust-lang/rust/issues/94978> for more information
= help: add `#![feature(deprecated_safe)]` to the crate attributes to enable

error[E0658]: the `#[deprecated_safe]` attribute is an experimental feature
--> $DIR/feature-gate-deprecated_safe.rs:4:1
|
LL | #[deprecated_safe(since = "TBD", note = "...")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #94978 <https://github.com/rust-lang/rust/issues/94978> for more information
= help: add `#![feature(deprecated_safe)]` to the crate attributes to enable

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0658`.

0 comments on commit e4f1179

Please sign in to comment.