From 56d71c2910a4e07512ca6bf80fe257bbfcc3265e Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 30 May 2019 12:30:03 +0200 Subject: [PATCH] Stabilize underscore_const_names. --- src/librustc_data_structures/macros.rs | 5 +++-- src/libsyntax/feature_gate.rs | 14 +++----------- src/test/ui/consts/const_short_circuit.rs | 2 -- src/test/ui/consts/const_short_circuit.stderr | 8 ++++---- .../ui/{ => consts}/underscore_const_names.rs | 5 ++--- .../feature-gate-underscore_const_names.rs | 14 -------------- .../feature-gate-underscore_const_names.stderr | 18 ------------------ .../underscore_const_names_feature_gate.rs | 3 --- .../underscore_const_names_feature_gate.stderr | 12 ------------ 9 files changed, 12 insertions(+), 69 deletions(-) rename src/test/ui/{ => consts}/underscore_const_names.rs (88%) delete mode 100644 src/test/ui/feature-gates/feature-gate-underscore_const_names.rs delete mode 100644 src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr delete mode 100644 src/test/ui/feature-gates/underscore_const_names_feature_gate.rs delete mode 100644 src/test/ui/feature-gates/underscore_const_names_feature_gate.stderr diff --git a/src/librustc_data_structures/macros.rs b/src/librustc_data_structures/macros.rs index b851263aaf9..a813b5230d2 100644 --- a/src/librustc_data_structures/macros.rs +++ b/src/librustc_data_structures/macros.rs @@ -1,6 +1,7 @@ /// A simple static assertion macro. #[macro_export] -#[allow_internal_unstable(type_ascription, underscore_const_names)] +#[cfg_attr(stage0, allow_internal_unstable(type_ascription, underscore_const_names))] +#[cfg_attr(not(stage0), allow_internal_unstable(type_ascription))] macro_rules! static_assert { ($test:expr) => { // Use the bool to access an array such that if the bool is false, the access @@ -12,7 +13,7 @@ macro_rules! static_assert { /// Type size assertion. The first argument is a type and the second argument is its expected size. #[macro_export] -#[allow_internal_unstable(underscore_const_names)] +#[cfg_attr(stage0, allow_internal_unstable(underscore_const_names))] macro_rules! static_assert_size { ($ty:ty, $size:expr) => { const _: [(); $size] = [(); ::std::mem::size_of::<$ty>()]; diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index bbb297e3c4f..e759d245646 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -25,7 +25,7 @@ use crate::source_map::Spanned; use crate::edition::{ALL_EDITIONS, Edition}; use crate::visit::{self, FnKind, Visitor}; use crate::parse::{token, ParseSess}; -use crate::symbol::{Symbol, kw, sym}; +use crate::symbol::{Symbol, sym}; use crate::tokenstream::TokenTree; use errors::{Applicability, DiagnosticBuilder, Handler}; @@ -526,9 +526,6 @@ declare_features! ( // Allows `impl Trait` in bindings (`let`, `const`, `static`). (active, impl_trait_in_bindings, "1.30.0", Some(34511), None), - // Allows `const _: TYPE = VALUE`. - (active, underscore_const_names, "1.31.0", Some(54912), None), - // Allows using `reason` in lint attributes and the `#[expect(lint)]` lint check. (active, lint_reasons, "1.31.0", Some(54503), None), @@ -843,6 +840,8 @@ declare_features! ( // Allows using `#[repr(align(X))]` on enums with equivalent semantics // to wrapping an enum in a wrapper struct with `#[repr(align(X))]`. (accepted, repr_align_enum, "1.37.0", Some(57996), None), + // Allows `const _: TYPE = VALUE`. + (accepted, underscore_const_names, "1.37.0", Some(54912), None), // ------------------------------------------------------------------------- // feature-group-end: accepted features @@ -1992,13 +1991,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { fn visit_item(&mut self, i: &'a ast::Item) { match i.node { - ast::ItemKind::Const(_,_) => { - if i.ident.name == kw::Underscore { - gate_feature_post!(&self, underscore_const_names, i.span, - "naming constants with `_` is unstable"); - } - } - ast::ItemKind::ForeignMod(ref foreign_module) => { self.check_abi(foreign_module.abi, i.span); } diff --git a/src/test/ui/consts/const_short_circuit.rs b/src/test/ui/consts/const_short_circuit.rs index 1e7b7ed3193..87b14a11178 100644 --- a/src/test/ui/consts/const_short_circuit.rs +++ b/src/test/ui/consts/const_short_circuit.rs @@ -1,5 +1,3 @@ -#![feature(underscore_const_names)] - const _: bool = false && false; const _: bool = true && false; const _: bool = { diff --git a/src/test/ui/consts/const_short_circuit.stderr b/src/test/ui/consts/const_short_circuit.stderr index a67bb0b1b6d..0a6536c8837 100644 --- a/src/test/ui/consts/const_short_circuit.stderr +++ b/src/test/ui/consts/const_short_circuit.stderr @@ -1,23 +1,23 @@ error: new features like let bindings are not permitted in constants which also use short circuiting operators - --> $DIR/const_short_circuit.rs:6:9 + --> $DIR/const_short_circuit.rs:4:9 | LL | let mut x = true && false; | ^^^^^ | note: use of `&&` operator here does not actually short circuit due to the const evaluator presently not being able to do control flow. See https://github.com/rust-lang/rust/issues/49146 for more information. - --> $DIR/const_short_circuit.rs:6:22 + --> $DIR/const_short_circuit.rs:4:22 | LL | let mut x = true && false; | ^^ error: new features like let bindings are not permitted in constants which also use short circuiting operators - --> $DIR/const_short_circuit.rs:11:9 + --> $DIR/const_short_circuit.rs:9:9 | LL | let x = true && false; | ^ | note: use of `&&` operator here does not actually short circuit due to the const evaluator presently not being able to do control flow. See https://github.com/rust-lang/rust/issues/49146 for more information. - --> $DIR/const_short_circuit.rs:11:18 + --> $DIR/const_short_circuit.rs:9:18 | LL | let x = true && false; | ^^ diff --git a/src/test/ui/underscore_const_names.rs b/src/test/ui/consts/underscore_const_names.rs similarity index 88% rename from src/test/ui/underscore_const_names.rs rename to src/test/ui/consts/underscore_const_names.rs index 1db022e8862..8d57e5074f1 100644 --- a/src/test/ui/underscore_const_names.rs +++ b/src/test/ui/consts/underscore_const_names.rs @@ -1,9 +1,9 @@ // compile-pass -#![feature(underscore_const_names)] +#![deny(unused)] trait Trt {} -struct Str {} +pub struct Str {} impl Trt for Str {} macro_rules! check_impl { @@ -17,7 +17,6 @@ macro_rules! check_impl { } } -#[deny(unused)] const _ : () = (); const _ : i32 = 42; diff --git a/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs b/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs deleted file mode 100644 index 6b97c24a47e..00000000000 --- a/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs +++ /dev/null @@ -1,14 +0,0 @@ -trait Trt {} -struct Str {} - -impl Trt for Str {} - -const _ : () = { -//~^ ERROR is unstable - use std::marker::PhantomData; - struct ImplementsTrait(PhantomData); - let _ = ImplementsTrait::(PhantomData); - () -}; - -fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr b/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr deleted file mode 100644 index 8d925424d8c..00000000000 --- a/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr +++ /dev/null @@ -1,18 +0,0 @@ -error[E0658]: naming constants with `_` is unstable - --> $DIR/feature-gate-underscore_const_names.rs:6:1 - | -LL | / const _ : () = { -LL | | -LL | | use std::marker::PhantomData; -LL | | struct ImplementsTrait(PhantomData); -LL | | let _ = ImplementsTrait::(PhantomData); -LL | | () -LL | | }; - | |__^ - | - = note: for more information, see https://github.com/rust-lang/rust/issues/54912 - = help: add #![feature(underscore_const_names)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/feature-gates/underscore_const_names_feature_gate.rs b/src/test/ui/feature-gates/underscore_const_names_feature_gate.rs deleted file mode 100644 index e50bbf5b649..00000000000 --- a/src/test/ui/feature-gates/underscore_const_names_feature_gate.rs +++ /dev/null @@ -1,3 +0,0 @@ -const _: () = (); //~ ERROR is unstable - -fn main() {} diff --git a/src/test/ui/feature-gates/underscore_const_names_feature_gate.stderr b/src/test/ui/feature-gates/underscore_const_names_feature_gate.stderr deleted file mode 100644 index 0931145a6e2..00000000000 --- a/src/test/ui/feature-gates/underscore_const_names_feature_gate.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0658]: naming constants with `_` is unstable - --> $DIR/underscore_const_names_feature_gate.rs:1:1 - | -LL | const _: () = (); - | ^^^^^^^^^^^^^^^^^ - | - = note: for more information, see https://github.com/rust-lang/rust/issues/54912 - = help: add #![feature(underscore_const_names)] to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`.