// Allows `impl Trait` in function return types.
(active, conservative_impl_trait, "1.12.0", Some(34511)),
- // Permits numeric fields in struct expressions and patterns.
- (active, relaxed_adts, "1.12.0", Some(35626)),
-
// The `!` type
(active, never_type, "1.13.0", Some(35121)),
(accepted, pub_restricted, "1.18.0", Some(32409)),
// The #![windows_subsystem] attribute
(accepted, windows_subsystem, "1.18.0", Some(37499)),
+ // Permits numeric fields in struct expressions and patterns.
+ (accepted, relaxed_adts, "1.18.0", Some(35626)),
);
+
// If you change this, please modify src/doc/unstable-book as well. You must
// move that documentation into the relevant place in the other docs, and
// remove the chapter on the flag.
}
}
-fn starts_with_digit(s: &str) -> bool {
- s.as_bytes().first().cloned().map_or(false, |b| b >= b'0' && b <= b'9')
-}
-
impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
fn visit_attribute(&mut self, attr: &ast::Attribute) {
if !attr.span.allows_unstable() {
ast::ExprKind::InPlace(..) => {
gate_feature_post!(&self, placement_in_syntax, e.span, EXPLAIN_PLACEMENT_IN);
}
- ast::ExprKind::Struct(_, ref fields, _) => {
- for field in fields {
- if starts_with_digit(&field.ident.node.name.as_str()) {
- gate_feature_post!(&self, relaxed_adts,
- field.span,
- "numeric fields in struct expressions are unstable");
- }
- }
- }
ast::ExprKind::Break(_, Some(_)) => {
gate_feature_post!(&self, loop_break_value, e.span,
"`break` with a value is experimental");
pattern.span,
"box pattern syntax is experimental");
}
- PatKind::Struct(_, ref fields, _) => {
- for field in fields {
- if starts_with_digit(&field.node.ident.name.as_str()) {
- gate_feature_post!(&self, relaxed_adts,
- field.span,
- "numeric fields in struct patterns are unstable");
- }
- }
- }
PatKind::Range(_, _, RangeEnd::Excluded) => {
gate_feature_post!(&self, exclusive_range_pattern, pattern.span,
"exclusive range pattern syntax is experimental");
+++ /dev/null
-// Copyright 2016 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-relaxed_adts
-
-struct S(u8);
-
-fn main() {
- let s = S{0: 10}; //~ ERROR numeric fields in struct expressions are unstable
- match s {
- S{0: a, ..} => {} //~ ERROR numeric fields in struct patterns are unstable
- }
-}