From d75c7530f38b56c4d916195570cdcd18c12ce273 Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Wed, 4 Dec 2019 22:00:28 +0100 Subject: [PATCH] Reuse the `staged_api` feature for `rustc_const_unstable` --- src/liballoc/lib.rs | 2 +- src/libcore/lib.rs | 2 +- src/librustc/middle/stability.rs | 7 ++++++- src/librustc_feature/active.rs | 4 ---- src/librustc_feature/builtin_attrs.rs | 6 ++---- src/libstd/lib.rs | 2 +- src/test/rustdoc/const-display.rs | 2 +- src/test/ui/consts/const-eval/auxiliary/stability.rs | 2 +- .../ui/consts/const-eval/dont_promote_unstable_const_fn.rs | 2 +- .../consts/min_const_fn/min_const_fn_libstd_stability.rs | 2 +- .../min_const_fn/min_const_unsafe_fn_libstd_stability.rs | 2 +- .../min_const_fn/min_const_unsafe_fn_libstd_stability2.rs | 2 +- src/test/ui/feature-gate/allow-features-empty.rs | 2 -- src/test/ui/feature-gate/allow-features.rs | 2 -- .../ui/feature-gates/feature-gate-rustc_const_unstable.rs | 5 +---- .../ui/stability-attribute/stability-attribute-sanity.rs | 2 +- 16 files changed, 19 insertions(+), 27 deletions(-) diff --git a/src/liballoc/lib.rs b/src/liballoc/lib.rs index ddfa6797a57..d828e374a7b 100644 --- a/src/liballoc/lib.rs +++ b/src/liballoc/lib.rs @@ -117,7 +117,7 @@ #![feature(unsized_locals)] #![feature(allocator_internals)] #![cfg_attr(bootstrap, feature(on_unimplemented))] -#![feature(rustc_const_unstable)] +#![cfg_attr(bootstrap, feature(rustc_const_unstable))] #![feature(slice_partition_dedup)] #![feature(maybe_uninit_extra, maybe_uninit_slice)] #![feature(alloc_layout_extra)] diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index 8a514f1e78e..146d582eb7a 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -96,7 +96,7 @@ #![feature(prelude_import)] #![feature(repr_simd, platform_intrinsics)] #![feature(rustc_attrs)] -#![feature(rustc_const_unstable)] +#![cfg_attr(bootstrap, feature(rustc_const_unstable))] #![feature(simd_ffi)] #![feature(specialization)] #![feature(staged_api)] diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index 54aafe2114d..bd47d41a785 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -189,9 +189,14 @@ fn annotate(&mut self, hir_id: HirId, attrs: &[Attribute], } } else { // Emit errors for non-staged-api crates. + let unstable_attrs = [ + sym::unstable, sym::stable, + sym::rustc_deprecated, + sym::rustc_const_unstable, + ]; for attr in attrs { let name = attr.name_or_empty(); - if [sym::unstable, sym::stable, sym::rustc_deprecated].contains(&name) { + if unstable_attrs.contains(&name) { attr::mark_used(attr); struct_span_err!( self.tcx.sess, diff --git a/src/librustc_feature/active.rs b/src/librustc_feature/active.rs index 363621b3ca4..98213b890f9 100644 --- a/src/librustc_feature/active.rs +++ b/src/librustc_feature/active.rs @@ -111,10 +111,6 @@ pub fn set(&self, features: &mut Features, span: Span) { /// macros disappear). (active, allow_internal_unsafe, "1.0.0", None, None), - /// Allows using `#[rustc_const_unstable(feature = "foo", ..)]` which - /// lets a function to be `const` when opted into with `#![feature(foo)]`. - (active, rustc_const_unstable, "1.0.0", None, None), - /// no-tracking-issue-end /// Allows using `#[link_name="llvm.*"]`. diff --git a/src/librustc_feature/builtin_attrs.rs b/src/librustc_feature/builtin_attrs.rs index 4fa0198d871..0db2401aaea 100644 --- a/src/librustc_feature/builtin_attrs.rs +++ b/src/librustc_feature/builtin_attrs.rs @@ -344,10 +344,8 @@ macro_rules! experimental { unstable, Whitelisted, template!(List: r#"feature = "name", reason = "...", issue = "N""#), ), - gated!( - rustc_const_unstable, Normal, template!(List: r#"feature = "name""#), - "the `#[rustc_const_unstable]` attribute is an internal feature", - ), + // FIXME(#14407) + ungated!(rustc_const_unstable, Whitelisted, template!(List: r#"feature = "name""#)), gated!( allow_internal_unstable, Normal, template!(Word, List: "feat1, feat2, ..."), "allow_internal_unstable side-steps feature gating and stability checks", diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index 1dbb0c6ec83..8198ae73a31 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -293,7 +293,7 @@ #![feature(raw)] #![feature(renamed_spin_loop)] #![feature(rustc_attrs)] -#![feature(rustc_const_unstable)] +#![cfg_attr(bootstrap, feature(rustc_const_unstable))] #![feature(rustc_private)] #![feature(shrink_to)] #![feature(slice_concat_ext)] diff --git a/src/test/rustdoc/const-display.rs b/src/test/rustdoc/const-display.rs index 9df0368c40d..1496cba7c0b 100644 --- a/src/test/rustdoc/const-display.rs +++ b/src/test/rustdoc/const-display.rs @@ -4,7 +4,7 @@ reason = "who ever let humans program computers, we're apparently really bad at it", issue = "0")] -#![feature(rustc_const_unstable, const_fn, foo, foo2)] +#![feature(const_fn, foo, foo2)] #![feature(staged_api)] // @has 'foo/fn.foo.html' '//pre' 'pub unsafe fn foo() -> u32' diff --git a/src/test/ui/consts/const-eval/auxiliary/stability.rs b/src/test/ui/consts/const-eval/auxiliary/stability.rs index 5551d35bcc8..f32e35d82af 100644 --- a/src/test/ui/consts/const-eval/auxiliary/stability.rs +++ b/src/test/ui/consts/const-eval/auxiliary/stability.rs @@ -3,7 +3,7 @@ #![crate_type="rlib"] #![stable(feature = "rust1", since = "1.0.0")] -#![feature(rustc_const_unstable, const_fn)] +#![feature(const_fn)] #![feature(staged_api)] #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs b/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs index 90028690990..ea9c365410d 100644 --- a/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs +++ b/src/test/ui/consts/const-eval/dont_promote_unstable_const_fn.rs @@ -3,7 +3,7 @@ we're apparently really bad at it", issue = "0")] -#![feature(rustc_const_unstable, const_fn)] +#![feature(const_fn)] #![feature(staged_api)] #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs b/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs index 759d9ab6a40..6d53da50b3f 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs +++ b/src/test/ui/consts/min_const_fn/min_const_fn_libstd_stability.rs @@ -3,7 +3,7 @@ we're apparently really bad at it", issue = "0")] -#![feature(rustc_const_unstable, const_fn, foo, foo2)] +#![feature(const_fn, foo, foo2)] #![feature(staged_api)] #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs b/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs index 64057b012b8..f1f15a34c9e 100644 --- a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs +++ b/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability.rs @@ -3,7 +3,7 @@ we're apparently really bad at it", issue = "0")] -#![feature(rustc_const_unstable, const_fn, foo, foo2)] +#![feature(const_fn, foo, foo2)] #![feature(staged_api)] #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs b/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs index deb2cb6b619..2ac9e32e4a0 100644 --- a/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs +++ b/src/test/ui/consts/min_const_fn/min_const_unsafe_fn_libstd_stability2.rs @@ -3,7 +3,7 @@ we're apparently really bad at it", issue = "0")] -#![feature(rustc_const_unstable, const_fn, foo, foo2)] +#![feature(const_fn, foo, foo2)] #![feature(staged_api)] #[stable(feature = "rust1", since = "1.0.0")] diff --git a/src/test/ui/feature-gate/allow-features-empty.rs b/src/test/ui/feature-gate/allow-features-empty.rs index 641e4b852e7..88a60934927 100644 --- a/src/test/ui/feature-gate/allow-features-empty.rs +++ b/src/test/ui/feature-gate/allow-features-empty.rs @@ -1,8 +1,6 @@ // compile-flags: -Z allow_features= // Note: This test uses rustc internal flags because they will never stabilize. -#![feature(rustc_const_unstable)] //~ ERROR - #![feature(lang_items)] //~ ERROR #![feature(unknown_stdlib_feature)] //~ ERROR diff --git a/src/test/ui/feature-gate/allow-features.rs b/src/test/ui/feature-gate/allow-features.rs index de69e48a65f..2ce4701a818 100644 --- a/src/test/ui/feature-gate/allow-features.rs +++ b/src/test/ui/feature-gate/allow-features.rs @@ -1,8 +1,6 @@ // compile-flags: -Z allow_features=lang_items // Note: This test uses rustc internal flags because they will never stabilize. -#![feature(rustc_const_unstable)] //~ ERROR - #![feature(lang_items)] #![feature(unknown_stdlib_feature)] //~ ERROR diff --git a/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs b/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs index 6961e68744f..3296a17a0b7 100644 --- a/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs +++ b/src/test/ui/feature-gates/feature-gate-rustc_const_unstable.rs @@ -1,11 +1,8 @@ // Test internal const fn feature gate. -#![feature(staged_api)] #![feature(const_fn)] -//#![feature(rustc_const_unstable)] -#[stable(feature="zing", since="1.0.0")] -#[rustc_const_unstable(feature="fzzzzzt")] //~ERROR internal feature +#[rustc_const_unstable(feature="fzzzzzt")] //~ stability attributes may not be used outside pub const fn bazinga() {} fn main() { diff --git a/src/test/ui/stability-attribute/stability-attribute-sanity.rs b/src/test/ui/stability-attribute/stability-attribute-sanity.rs index 38421e2e6ef..fc96d44bbb7 100644 --- a/src/test/ui/stability-attribute/stability-attribute-sanity.rs +++ b/src/test/ui/stability-attribute/stability-attribute-sanity.rs @@ -1,6 +1,6 @@ // Various checks that stability attributes are used correctly, per RFC 507 -#![feature(const_fn, staged_api, rustc_const_unstable)] +#![feature(const_fn, staged_api)] #![stable(feature = "rust1", since = "1.0.0")] -- 2.44.0