diff options
| author | bors <bors@rust-lang.org> | 2019-02-07 04:26:08 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-02-07 04:26:08 +0000 |
| commit | 825f355c7483746f3a17166f34dfabe3b2df1741 (patch) | |
| tree | 1ed704e1f30589c3bcebd154e43247c7a2a7615c /src/libsyntax | |
| parent | 1efdda10cdde386ea3e470ba2b482fdc73c12001 (diff) | |
| parent | a6fd6eccda42f86e40b73d788e8099adeb66e37b (diff) | |
| download | rust-825f355c7483746f3a17166f34dfabe3b2df1741.tar.gz rust-825f355c7483746f3a17166f34dfabe3b2df1741.zip | |
Auto merge of #57998 - niklasf:align-enum, r=nagisa
Allow #[repr(align(x))] on enums (#57996) Tracking issue: #57996 Implements an extension of [RFC 1358](https://github.com/rust-lang/rfcs/blob/master/text/1358-repr-align.md) behind a feature flag (`repr_align_enum`). Originally introduced here for structs: #39999. It seems like only HIR-level changes are required, since enums are already aware of their alignment (due to alignment of their limbs). cc @bitshifter
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 6c780369a0a..e7b9a884b5e 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -464,6 +464,9 @@ declare_features! ( // #[optimize(X)] (active, optimize_attribute, "1.34.0", Some(54882), None), + + // #[repr(align(X))] on enums + (active, repr_align_enum, "1.34.0", Some(57996), None), ); declare_features! ( @@ -1700,6 +1703,17 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> { } } + ast::ItemKind::Enum(..) => { + for attr in attr::filter_by_name(&i.attrs[..], "repr") { + for item in attr.meta_item_list().unwrap_or_else(Vec::new) { + if item.check_name("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, |
