Remove struct_field_attributes feature gate
This commit is contained in:
parent
554c685b0b
commit
79f173ad21
|
@ -36,11 +36,11 @@
|
|||
#![feature(discriminant_value)]
|
||||
#![feature(specialization)]
|
||||
#![feature(manually_drop)]
|
||||
#![feature(struct_field_attributes)]
|
||||
|
||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||
#![cfg_attr(stage0, feature(rustc_private))]
|
||||
#![cfg_attr(stage0, feature(staged_api))]
|
||||
#![cfg_attr(stage0, feature(struct_field_attributes))]
|
||||
|
||||
#![cfg_attr(unix, feature(libc))]
|
||||
#![cfg_attr(test, feature(test))]
|
||||
|
|
|
@ -223,7 +223,6 @@ impl<'a> StripUnconfigured<'a> {
|
|||
ast::ExprKind::Struct(path, fields, base) => {
|
||||
let fields = fields.into_iter()
|
||||
.filter_map(|field| {
|
||||
self.visit_struct_field_attrs(field.attrs());
|
||||
self.configure(field)
|
||||
})
|
||||
.collect();
|
||||
|
@ -256,17 +255,6 @@ impl<'a> StripUnconfigured<'a> {
|
|||
}
|
||||
|
||||
pub fn configure_struct_expr_field(&mut self, field: ast::Field) -> Option<ast::Field> {
|
||||
if !self.features.map(|features| features.struct_field_attributes).unwrap_or(true) {
|
||||
if !field.attrs.is_empty() {
|
||||
let mut err = feature_err(self.sess,
|
||||
"struct_field_attributes",
|
||||
field.span,
|
||||
GateIssue::Language,
|
||||
"attributes on struct literal fields are unstable");
|
||||
err.emit();
|
||||
}
|
||||
}
|
||||
|
||||
self.configure(field)
|
||||
}
|
||||
|
||||
|
@ -275,7 +263,6 @@ impl<'a> StripUnconfigured<'a> {
|
|||
if let ast::PatKind::Struct(path, fields, etc) = pattern.node {
|
||||
let fields = fields.into_iter()
|
||||
.filter_map(|field| {
|
||||
self.visit_struct_field_attrs(field.attrs());
|
||||
self.configure(field)
|
||||
})
|
||||
.collect();
|
||||
|
@ -284,21 +271,6 @@ impl<'a> StripUnconfigured<'a> {
|
|||
pattern
|
||||
})
|
||||
}
|
||||
|
||||
fn visit_struct_field_attrs(&mut self, attrs: &[ast::Attribute]) {
|
||||
// flag the offending attributes
|
||||
for attr in attrs.iter() {
|
||||
if !self.features.map(|features| features.struct_field_attributes).unwrap_or(true) {
|
||||
let mut err = feature_err(
|
||||
self.sess,
|
||||
"struct_field_attributes",
|
||||
attr.span,
|
||||
GateIssue::Language,
|
||||
"attributes on struct pattern or literal fields are unstable");
|
||||
err.emit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> fold::Folder for StripUnconfigured<'a> {
|
||||
|
|
|
@ -312,9 +312,6 @@ declare_features! (
|
|||
// Declarative macros 2.0 (`macro`).
|
||||
(active, decl_macro, "1.17.0", Some(39412)),
|
||||
|
||||
// Allows attributes on struct literal fields.
|
||||
(active, struct_field_attributes, "1.16.0", Some(38814)),
|
||||
|
||||
// Allows #[link(kind="static-nobundle"...]
|
||||
(active, static_nobundle, "1.16.0", Some(37403)),
|
||||
|
||||
|
@ -430,6 +427,8 @@ declare_features! (
|
|||
(accepted, relaxed_adts, "1.19.0", Some(35626)),
|
||||
// Coerces non capturing closures to function pointers
|
||||
(accepted, closure_to_fn_coercion, "1.19.0", Some(39817)),
|
||||
// Allows attributes on struct literal fields.
|
||||
(accepted, struct_field_attributes, "1.20.0", Some(38814)),
|
||||
);
|
||||
|
||||
// If you change this, please modify src/doc/unstable-book as well. You must
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
// gate-test-struct_field_attributes
|
||||
|
||||
struct Foo {
|
||||
present: (),
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let foo = Foo { #[cfg(all())] present: () };
|
||||
//~^ ERROR attributes on struct pattern or literal fields are unstable
|
||||
let Foo { #[cfg(all())] present: () } = foo;
|
||||
//~^ ERROR attributes on struct pattern or literal fields are unstable
|
||||
}
|
|
@ -8,8 +8,6 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(struct_field_attributes)]
|
||||
|
||||
struct Foo {
|
||||
present: (),
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue