diff options
| author | bors <bors@rust-lang.org> | 2019-06-16 20:33:55 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-06-16 20:33:55 +0000 |
| commit | 4edff843dd219cf19a5fede6c78c7ce95402e1f5 (patch) | |
| tree | 8b249bd7f2e9c9743684019f07ab792a7846afa5 /src/libsyntax | |
| parent | 799cf3f603b5809a68853efcd779671cb8e046c4 (diff) | |
| parent | e62c9d7917052db098c6f27314f4daa5b9513387 (diff) | |
| download | rust-4edff843dd219cf19a5fede6c78c7ce95402e1f5.tar.gz rust-4edff843dd219cf19a5fede6c78c7ce95402e1f5.zip | |
Auto merge of #61347 - Centril:stabilize-underscore_const_names, r=petrochenkov
Stabilize underscore_const_names in 1.37.0
You are now permitted to write:
```rust
const _: $type_expression = $term_expression;
```
That is, we change the [grammar of items](https://github.com/rust-lang-nursery/wg-grammar/blob/9d1984d7ae8d6576f943566539a31a5800644c57/grammar/item.lyg#L3-L42), as written in [the *`.lyg`* notation](https://github.com/rust-lang/gll/tree/263bf161dad903e67aa65fc591ced3cab18afa2a#grammar), from:
```java
Item = attrs:OuterAttr* vis:Vis? kind:ItemKind;
ItemKind =
| ...
| Const:{ "const" name:IDENT ":" ty:Type "=" value:Expr ";" }
| ...
;
```
into:
```java
Item = attrs:OuterAttr* vis:Vis? kind:ItemKind;
ItemKind =
| ...
| Const:{ "const" name:IdentOrUnderscore ":" ty:Type "=" value:Expr ";" }
| ...
;
IdentOrUnderscore =
| Named:IDENT
| NoName:"_"
;
```
r? @petrochenkov
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 14 |
1 files changed, 3 insertions, 11 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 1d8f68ec63a..7f80e2099f6 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), @@ -851,6 +848,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 @@ -2000,13 +1999,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); } |
