Remove struct_field_attributes feature gate
This commit is contained in:
parent
554c685b0b
commit
79f173ad21
|
@ -36,11 +36,11 @@
|
||||||
#![feature(discriminant_value)]
|
#![feature(discriminant_value)]
|
||||||
#![feature(specialization)]
|
#![feature(specialization)]
|
||||||
#![feature(manually_drop)]
|
#![feature(manually_drop)]
|
||||||
#![feature(struct_field_attributes)]
|
|
||||||
|
|
||||||
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
#![cfg_attr(stage0, unstable(feature = "rustc_private", issue = "27812"))]
|
||||||
#![cfg_attr(stage0, feature(rustc_private))]
|
#![cfg_attr(stage0, feature(rustc_private))]
|
||||||
#![cfg_attr(stage0, feature(staged_api))]
|
#![cfg_attr(stage0, feature(staged_api))]
|
||||||
|
#![cfg_attr(stage0, feature(struct_field_attributes))]
|
||||||
|
|
||||||
#![cfg_attr(unix, feature(libc))]
|
#![cfg_attr(unix, feature(libc))]
|
||||||
#![cfg_attr(test, feature(test))]
|
#![cfg_attr(test, feature(test))]
|
||||||
|
|
|
@ -223,7 +223,6 @@ impl<'a> StripUnconfigured<'a> {
|
||||||
ast::ExprKind::Struct(path, fields, base) => {
|
ast::ExprKind::Struct(path, fields, base) => {
|
||||||
let fields = fields.into_iter()
|
let fields = fields.into_iter()
|
||||||
.filter_map(|field| {
|
.filter_map(|field| {
|
||||||
self.visit_struct_field_attrs(field.attrs());
|
|
||||||
self.configure(field)
|
self.configure(field)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
@ -256,17 +255,6 @@ impl<'a> StripUnconfigured<'a> {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn configure_struct_expr_field(&mut self, field: ast::Field) -> Option<ast::Field> {
|
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)
|
self.configure(field)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +263,6 @@ impl<'a> StripUnconfigured<'a> {
|
||||||
if let ast::PatKind::Struct(path, fields, etc) = pattern.node {
|
if let ast::PatKind::Struct(path, fields, etc) = pattern.node {
|
||||||
let fields = fields.into_iter()
|
let fields = fields.into_iter()
|
||||||
.filter_map(|field| {
|
.filter_map(|field| {
|
||||||
self.visit_struct_field_attrs(field.attrs());
|
|
||||||
self.configure(field)
|
self.configure(field)
|
||||||
})
|
})
|
||||||
.collect();
|
.collect();
|
||||||
|
@ -284,21 +271,6 @@ impl<'a> StripUnconfigured<'a> {
|
||||||
pattern
|
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> {
|
impl<'a> fold::Folder for StripUnconfigured<'a> {
|
||||||
|
|
|
@ -312,9 +312,6 @@ declare_features! (
|
||||||
// Declarative macros 2.0 (`macro`).
|
// Declarative macros 2.0 (`macro`).
|
||||||
(active, decl_macro, "1.17.0", Some(39412)),
|
(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"...]
|
// Allows #[link(kind="static-nobundle"...]
|
||||||
(active, static_nobundle, "1.16.0", Some(37403)),
|
(active, static_nobundle, "1.16.0", Some(37403)),
|
||||||
|
|
||||||
|
@ -430,6 +427,8 @@ declare_features! (
|
||||||
(accepted, relaxed_adts, "1.19.0", Some(35626)),
|
(accepted, relaxed_adts, "1.19.0", Some(35626)),
|
||||||
// Coerces non capturing closures to function pointers
|
// Coerces non capturing closures to function pointers
|
||||||
(accepted, closure_to_fn_coercion, "1.19.0", Some(39817)),
|
(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
|
// 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
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
#![feature(struct_field_attributes)]
|
|
||||||
|
|
||||||
struct Foo {
|
struct Foo {
|
||||||
present: (),
|
present: (),
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue