1 //! List of the removed feature gates.
3 use super::{to_nonzero, Feature, State}
;
4 use rustc_span
::symbol
::sym
;
6 macro_rules
! declare_features
{
8 $
(#[doc = $doc:tt])* (removed, $feature:ident, $ver:expr, $issue:expr, None, $reason:expr),
10 /// Represents unstable features which have since been removed (it was once Active)
11 pub const REMOVED_FEATURES
: &[Feature
] = &[
14 state
: State
::Removed { reason: $reason }
,
17 issue
: to_nonzero($issue
),
19 description
: concat
!($
($doc
,)*),
26 $
(#[doc = $doc:tt])* (stable_removed, $feature:ident, $ver:expr, $issue:expr, None),
28 /// Represents stable features which have since been removed (it was once Accepted)
29 pub const STABLE_REMOVED_FEATURES
: &[Feature
] = &[
32 state
: State
::Stabilized { reason: None }
,
35 issue
: to_nonzero($issue
),
37 description
: concat
!($
($doc
,)*),
46 // -------------------------------------------------------------------------
47 // feature-group-start: removed features
48 // -------------------------------------------------------------------------
50 (removed
, import_shadowing
, "1.0.0", None
, None
, None
),
51 (removed
, managed_boxes
, "1.0.0", None
, None
, None
),
52 /// Allows use of unary negate on unsigned integers, e.g., -e for e: u8
53 (removed
, negate_unsigned
, "1.0.0", Some(29645), None
, None
),
54 (removed
, reflect
, "1.0.0", Some(27749), None
, None
),
55 /// A way to temporarily opt out of opt in copy. This will *never* be accepted.
56 (removed
, opt_out_copy
, "1.0.0", None
, None
, None
),
57 (removed
, quad_precision_float
, "1.0.0", None
, None
, None
),
58 (removed
, struct_inherit
, "1.0.0", None
, None
, None
),
59 (removed
, test_removed_feature
, "1.0.0", None
, None
, None
),
60 (removed
, visible_private_types
, "1.0.0", None
, None
, None
),
61 (removed
, unsafe_no_drop_flag
, "1.0.0", None
, None
, None
),
62 /// Allows using items which are missing stability attributes
63 (removed
, unmarked_api
, "1.0.0", None
, None
, None
),
64 (removed
, allocator
, "1.0.0", None
, None
, None
),
65 (removed
, simd
, "1.0.0", Some(27731), None
,
66 Some("removed in favor of `#[repr(simd)]`")),
67 (removed
, advanced_slice_patterns
, "1.0.0", Some(62254), None
,
68 Some("merged into `#![feature(slice_patterns)]`")),
69 (removed
, macro_reexport
, "1.0.0", Some(29638), None
,
70 Some("subsumed by `pub use`")),
71 /// Allows using custom attributes (RFC 572).
72 (removed
, custom_attribute
, "1.0.0", Some(29642), None
,
73 Some("removed in favor of `#![register_tool]` and `#![register_attr]`")),
74 (removed
, pushpop_unsafe
, "1.2.0", None
, None
, None
),
75 (removed
, needs_allocator
, "1.4.0", Some(27389), None
,
76 Some("subsumed by `#![feature(allocator_internals)]`")),
77 /// Allows identifying crates that contain sanitizer runtimes.
78 (removed
, sanitizer_runtime
, "1.17.0", None
, None
, None
),
79 (removed
, proc_macro_mod
, "1.27.0", Some(54727), None
,
80 Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
81 (removed
, proc_macro_expr
, "1.27.0", Some(54727), None
,
82 Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
83 (removed
, proc_macro_non_items
, "1.27.0", Some(54727), None
,
84 Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
85 (removed
, proc_macro_gen
, "1.27.0", Some(54727), None
,
86 Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
87 (removed
, panic_implementation
, "1.28.0", Some(44489), None
,
88 Some("subsumed by `#[panic_handler]`")),
89 /// Allows the use of `#[derive(Anything)]` as sugar for `#[derive_Anything]`.
90 (removed
, custom_derive
, "1.32.0", Some(29644), None
,
91 Some("subsumed by `#[proc_macro_derive]`")),
92 /// Paths of the form: `extern::foo::bar`
93 (removed
, extern_in_paths
, "1.33.0", Some(55600), None
,
94 Some("subsumed by `::foo::bar` paths")),
95 (removed
, quote
, "1.33.0", Some(29601), None
, None
),
96 /// Allows using `#[unsafe_destructor_blind_to_params]` (RFC 1238).
97 (removed
, dropck_parametricity
, "1.38.0", Some(28498), None
, None
),
98 (removed
, await_macro
, "1.38.0", Some(50547), None
,
99 Some("subsumed by `.await` syntax")),
100 /// Allows defining `existential type`s.
101 (removed
, existential_type
, "1.38.0", Some(63063), None
,
102 Some("removed in favor of `#![feature(type_alias_impl_trait)]`")),
103 /// Allows using the macros:
104 /// + `__diagnostic_used`
105 /// + `__register_diagnostic`
106 /// +`__build_diagnostic_array`
107 (removed
, rustc_diagnostic_macros
, "1.38.0", None
, None
, None
),
108 /// Allows using `#[on_unimplemented(..)]` on traits.
109 /// (Moved to `rustc_attrs`.)
110 (removed
, on_unimplemented
, "1.40.0", None
, None
, None
),
111 /// Allows overlapping impls of marker traits.
112 (removed
, overlapping_marker_traits
, "1.42.0", Some(29864), None
,
113 Some("removed in favor of `#![feature(marker_trait_attr)]`")),
114 /// Allows `#[no_debug]`.
115 (removed
, no_debug
, "1.43.0", Some(29721), None
, Some("removed due to lack of demand")),
117 /// Allows comparing raw pointers during const eval.
118 (removed
, const_compare_raw_pointers
, "1.46.0", Some(53020), None
,
119 Some("cannot be allowed in const eval in any meaningful way")),
121 // -------------------------------------------------------------------------
122 // feature-group-end: removed features
123 // -------------------------------------------------------------------------
128 (stable_removed
, no_stack_check
, "1.0.0", None
, None
),