diff options
| author | bors <bors@rust-lang.org> | 2019-06-09 23:50:04 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-06-09 23:50:04 +0000 |
| commit | 61a60ce7d369b54e209003e9e92bf90d6f5e5d4b (patch) | |
| tree | 0b606c3a8160219d9b02f75fdeb656c3a3c7a0e2 /src/libsyntax | |
| parent | 400b409efc4975a082185c5a74412572e49dfd98 (diff) | |
| parent | c25e3d2be5825463cf63c518854b583fbc9e8386 (diff) | |
| download | rust-61a60ce7d369b54e209003e9e92bf90d6f5e5d4b.tar.gz rust-61a60ce7d369b54e209003e9e92bf90d6f5e5d4b.zip | |
Auto merge of #61229 - Centril:stabilize-repr_align_enum, r=nagisa
Stabilize #![feature(repr_align_enum)] in Rust 1.37.0
On an `enum` item, you may now write:
```rust
#[repr(align(X))]
enum Foo {
// ...
}
```
This has equivalent effects to first defining:
```rust
#[repr(align(X))]
struct AlignX<T>(T);
```
and then using `AlignX<Foo>` in `Foo`'s stead.
r? @nagisa
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 17 |
1 files changed, 3 insertions, 14 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 7119fd13fbb..bbb297e3c4f 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -551,9 +551,6 @@ declare_features! ( // Allows using `#[optimize(X)]`. (active, optimize_attribute, "1.34.0", Some(54882), None), - // Allows using `#[repr(align(X))]` on enums. - (active, repr_align_enum, "1.34.0", Some(57996), None), - // Allows using C-variadics. (active, c_variadic, "1.34.0", Some(44930), None), @@ -843,6 +840,9 @@ declare_features! ( (accepted, extern_crate_self, "1.34.0", Some(56409), None), // Allows arbitrary delimited token streams in non-macro attributes. (accepted, unrestricted_attribute_tokens, "1.34.0", Some(55208), None), + // 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), // ------------------------------------------------------------------------- // feature-group-end: accepted features @@ -2033,17 +2033,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { } } - ast::ItemKind::Enum(..) => { - for attr in attr::filter_by_name(&i.attrs[..], sym::repr) { - for item in attr.meta_item_list().unwrap_or_else(Vec::new) { - if item.check_name(sym::align) { - gate_feature_post!(&self, repr_align_enum, attr.span, - "`#[repr(align(x))]` on enums is experimental"); - } - } - } - } - ast::ItemKind::Impl(_, polarity, defaultness, _, _, _, _) => { if polarity == ast::ImplPolarity::Negative { gate_feature_post!(&self, optin_builtin_traits, |
