Auto merge of #83386 - mark-i-m:stabilize-pat2015, r=nikomatsakis
Stabilize `:pat_param` and remove `:pat2021` Blocked on #83384 cc `@rust-lang/lang` #79278 If I understand `@nikomatsakis` in https://rust-lang.zulipchat.com/#narrow/stream/213817-t-lang/topic/or.20patterns/near/231133873, another FCP is not needed. r? `@nikomatsakis`
This commit is contained in:
commit
ca075d268d
15 changed files with 66 additions and 121 deletions
|
|
@ -1,8 +0,0 @@
|
|||
// Feature gate test for `edition_macro_pats` feature.
|
||||
|
||||
macro_rules! foo {
|
||||
($x:pat2015) => {}; //~ERROR `pat2015` and `pat2021` are unstable
|
||||
($x:pat2021) => {}; //~ERROR `pat2015` and `pat2021` are unstable
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -1,21 +0,0 @@
|
|||
error[E0658]: `pat2015` and `pat2021` are unstable.
|
||||
--> $DIR/feature-gate-edition_macro_pats.rs:4:9
|
||||
|
|
||||
LL | ($x:pat2015) => {};
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: see issue #54883 <https://github.com/rust-lang/rust/issues/54883> for more information
|
||||
= help: add `#![feature(edition_macro_pats)]` to the crate attributes to enable
|
||||
|
||||
error[E0658]: `pat2015` and `pat2021` are unstable.
|
||||
--> $DIR/feature-gate-edition_macro_pats.rs:5:9
|
||||
|
|
||||
LL | ($x:pat2021) => {};
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: see issue #54883 <https://github.com/rust-lang/rust/issues/54883> for more information
|
||||
= help: add `#![feature(edition_macro_pats)]` to the crate attributes to enable
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
// run-pass
|
||||
|
||||
#![feature(edition_macro_pats)]
|
||||
// edition:2021
|
||||
|
||||
macro_rules! foo {
|
||||
(a $x:pat2015) => {};
|
||||
(b $x:pat2021) => {};
|
||||
(a $x:pat_param) => {};
|
||||
(b $x:pat) => {};
|
||||
}
|
||||
|
||||
fn main() {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,14 @@
|
|||
// run-rustfix
|
||||
|
||||
#![feature(edition_macro_pats)]
|
||||
#![deny(or_patterns_back_compat)]
|
||||
#![allow(unused_macros)]
|
||||
macro_rules! foo { ($x:pat2015 | $y:pat) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! bar { ($($x:pat2015)+ | $($y:pat)+) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! baz { ($x:pat2015 | $y:pat2015) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat2015 | $y:pat) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat2015 | $y:pat2015) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! foo { ($x:pat_param | $y:pat) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! bar { ($($x:pat_param)+ | $($y:pat)+) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! baz { ($x:pat_param | $y:pat_param) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat_param | $y:pat) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat_param | $y:pat_param) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! match_any {
|
||||
( $expr:expr , $( $( $pat:pat2015 )|+ => $expr_arm:expr ),+ ) => { //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
( $expr:expr , $( $( $pat:pat_param )|+ => $expr_arm:expr ),+ ) => { //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
match $expr {
|
||||
$(
|
||||
$( $pat => $expr_arm, )+
|
||||
|
|
|
|||
|
|
@ -1,13 +1,12 @@
|
|||
// run-rustfix
|
||||
|
||||
#![feature(edition_macro_pats)]
|
||||
#![deny(or_patterns_back_compat)]
|
||||
#![allow(unused_macros)]
|
||||
macro_rules! foo { ($x:pat | $y:pat) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! bar { ($($x:pat)+ | $($y:pat)+) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! baz { ($x:pat2015 | $y:pat2015) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat2015 | $y:pat) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat | $y:pat2015) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! baz { ($x:pat_param | $y:pat_param) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat_param | $y:pat) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat | $y:pat_param) => {} } //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
macro_rules! match_any {
|
||||
( $expr:expr , $( $( $pat:pat )|+ => $expr_arm:expr ),+ ) => { //~ ERROR the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
match $expr {
|
||||
|
|
|
|||
|
|
@ -1,32 +1,32 @@
|
|||
error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:6:21
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:5:21
|
||||
|
|
||||
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
||||
| ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015`
|
||||
| ^^^^^^ help: use pat_param to preserve semantics: `$x:pat_param`
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:4:9
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:3:9
|
||||
|
|
||||
LL | #![deny(or_patterns_back_compat)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:7:23
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:6:23
|
||||
|
|
||||
LL | macro_rules! bar { ($($x:pat)+ | $($y:pat)+) => {} }
|
||||
| ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015`
|
||||
| ^^^^^^ help: use pat_param to preserve semantics: `$x:pat_param`
|
||||
|
||||
error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:10:21
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:9:21
|
||||
|
|
||||
LL | macro_rules! ogg { ($x:pat | $y:pat2015) => {} }
|
||||
| ^^^^^^ help: use pat2015 to preserve semantics: `$x:pat2015`
|
||||
LL | macro_rules! ogg { ($x:pat | $y:pat_param) => {} }
|
||||
| ^^^^^^ help: use pat_param to preserve semantics: `$x:pat_param`
|
||||
|
||||
error: the meaning of the `pat` fragment specifier is changing in Rust 2021, which may affect this macro
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:12:26
|
||||
--> $DIR/macro-or-patterns-back-compat.rs:11:26
|
||||
|
|
||||
LL | ( $expr:expr , $( $( $pat:pat )|+ => $expr_arm:expr ),+ ) => {
|
||||
| ^^^^^^^^ help: use pat2015 to preserve semantics: `$pat:pat2015`
|
||||
| ^^^^^^^^ help: use pat_param to preserve semantics: `$pat:pat_param`
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
#![feature(edition_macro_pats)]
|
||||
// edition:2021
|
||||
|
||||
#![allow(unused_macros)]
|
||||
macro_rules! foo { ($x:pat2021 | $y:pat2021) => {} } //~ ERROR `$x:pat2021` is followed by `|`, which is not allowed for `pat2021` fragments
|
||||
macro_rules! baz { ($x:pat2015 | $y:pat2015) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat2015 | $y:pat2021) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat2021 | $y:pat2015) => {} } //~ ERROR `$x:pat2021` is followed by `|`, which is not allowed for `pat2021` fragments
|
||||
macro_rules! foo { ($x:pat | $y:pat) => {} } //~ ERROR `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
||||
macro_rules! baz { ($x:pat_param | $y:pat_param) => {} } // should be ok
|
||||
macro_rules! qux { ($x:pat_param | $y:pat) => {} } // should be ok
|
||||
macro_rules! ogg { ($x:pat | $y:pat_param) => {} } //~ ERROR `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
||||
macro_rules! match_any {
|
||||
( $expr:expr , $( $( $pat:pat2021 )|+ => $expr_arm:pat2021 ),+ ) => { //~ ERROR `$pat:pat2021` may be followed by `|`, which is not allowed for `pat2021` fragments
|
||||
( $expr:expr , $( $( $pat:pat)|+ => $expr_arm:pat),+ ) => { //~ ERROR `$pat:pat` may be followed by `|`, which is not allowed for `pat` fragments
|
||||
match $expr {
|
||||
$(
|
||||
$( $pat => $expr_arm, )+
|
||||
|
|
|
|||
|
|
@ -1,24 +1,24 @@
|
|||
error: `$x:pat2021` is followed by `|`, which is not allowed for `pat2021` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:3:32
|
||||
error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:4:28
|
||||
|
|
||||
LL | macro_rules! foo { ($x:pat2021 | $y:pat2021) => {} }
|
||||
| ^ not allowed after `pat2021` fragments
|
||||
LL | macro_rules! foo { ($x:pat | $y:pat) => {} }
|
||||
| ^ not allowed after `pat` fragments
|
||||
|
|
||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||
|
||||
error: `$x:pat2021` is followed by `|`, which is not allowed for `pat2021` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:6:32
|
||||
error: `$x:pat` is followed by `|`, which is not allowed for `pat` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:7:28
|
||||
|
|
||||
LL | macro_rules! ogg { ($x:pat2021 | $y:pat2015) => {} }
|
||||
| ^ not allowed after `pat2021` fragments
|
||||
LL | macro_rules! ogg { ($x:pat | $y:pat_param) => {} }
|
||||
| ^ not allowed after `pat` fragments
|
||||
|
|
||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||
|
||||
error: `$pat:pat2021` may be followed by `|`, which is not allowed for `pat2021` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:8:40
|
||||
error: `$pat:pat` may be followed by `|`, which is not allowed for `pat` fragments
|
||||
--> $DIR/macro-pat2021-pattern-followed-by-or.rs:9:35
|
||||
|
|
||||
LL | ( $expr:expr , $( $( $pat:pat2021 )|+ => $expr_arm:pat2021 ),+ ) => {
|
||||
| ^ not allowed after `pat2021` fragments
|
||||
LL | ( $expr:expr , $( $( $pat:pat)|+ => $expr_arm:pat),+ ) => {
|
||||
| ^ not allowed after `pat` fragments
|
||||
|
|
||||
= note: allowed there are: `=>`, `,`, `=`, `if` or `in`
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue