Auto merge of #41145 - matthewjasper:stabilize-relaxed-adts, r=petrochenkov
Stabilize rfc 1506 - Clarified ADT Kinds Closes #35626 Documentation: - [ ] Reference rust-lang-nursery/reference#37 - [ ] Book? - [ ] Rust by example?
This commit is contained in:
commit
d0811c9148
6 changed files with 3 additions and 60 deletions
|
|
@ -71,7 +71,6 @@
|
|||
- [prelude_import](language-features/prelude-import.md)
|
||||
- [proc_macro](language-features/proc-macro.md)
|
||||
- [quote](language-features/quote.md)
|
||||
- [relaxed_adts](language-features/relaxed-adts.md)
|
||||
- [repr_align](language-features/repr-align.md)
|
||||
- [repr_simd](language-features/repr-simd.md)
|
||||
- [rustc_attrs](language-features/rustc-attrs.md)
|
||||
|
|
|
|||
|
|
@ -1,10 +0,0 @@
|
|||
# `relaxed_adts`
|
||||
|
||||
The tracking issue for this feature is: [#35626]
|
||||
|
||||
[#35626]: https://github.com/rust-lang/rust/issues/35626
|
||||
|
||||
------------------------
|
||||
|
||||
|
||||
|
||||
|
|
@ -269,9 +269,6 @@ declare_features! (
|
|||
// 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)),
|
||||
|
||||
|
|
@ -422,7 +419,10 @@ declare_features! (
|
|||
(accepted, windows_subsystem, "1.18.0", Some(37499)),
|
||||
// Allows `break {expr}` with a value inside `loop`s.
|
||||
(accepted, loop_break_value, "1.19.0", Some(37339)),
|
||||
// Permits numeric fields in struct expressions and patterns.
|
||||
(accepted, relaxed_adts, "1.19.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.
|
||||
|
|
@ -1104,10 +1104,6 @@ fn contains_novel_literal(item: &ast::MetaItem) -> bool {
|
|||
}
|
||||
}
|
||||
|
||||
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() {
|
||||
|
|
@ -1291,15 +1287,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
|||
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::Lit(ref lit) => {
|
||||
if let ast::LitKind::Int(_, ref ty) = lit.node {
|
||||
match *ty {
|
||||
|
|
@ -1339,15 +1326,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
|
|||
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");
|
||||
|
|
|
|||
|
|
@ -1,20 +0,0 @@
|
|||
// 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
|
||||
}
|
||||
}
|
||||
|
|
@ -8,8 +8,6 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(relaxed_adts)]
|
||||
|
||||
struct S(u8, u16);
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -8,8 +8,6 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(relaxed_adts)]
|
||||
|
||||
struct S(u8, u16);
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue