Remove struct_field_attributes feature gate

This commit is contained in:
Wonwoo Choi 2017-06-14 13:03:48 +09:00
parent 554c685b0b
commit 79f173ad21
5 changed files with 3 additions and 56 deletions

View File

@ -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))]

View File

@ -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> {

View File

@ -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

View File

@ -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
}

View File

@ -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: (),
}