Handle methodcalls & operators in patterns
This commit is contained in:
parent
6351247048
commit
6f014a81b2
29 changed files with 809 additions and 66 deletions
|
@ -17,12 +17,18 @@ fn main() {
|
|||
}
|
||||
match x as i32 {
|
||||
0..5+1 => errors_only.push(x),
|
||||
//~^ error: expected one of `=>`, `if`, or `|`, found `+`
|
||||
//~^ error: expected a pattern range bound, found an expression
|
||||
//~| error: exclusive range pattern syntax is experimental
|
||||
1 | -3..0 => first_or.push(x),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y @ (0..5 | 6) => or_two.push(y),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
//~| error: inline-const in pattern position is experimental
|
||||
y @ -5.. => range_from.push(y),
|
||||
y @ ..-7 => assert_eq!(y, -8),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y => bottom.push(y),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
error: expected one of `=>`, `if`, or `|`, found `+`
|
||||
--> $DIR/range_pat_interactions1.rs:19:17
|
||||
error: expected a pattern range bound, found an expression
|
||||
--> $DIR/range_pat_interactions1.rs:19:16
|
||||
|
|
||||
LL | 0..5+1 => errors_only.push(x),
|
||||
| ^ expected one of `=>`, `if`, or `|`
|
||||
| ^^^ arbitrary expressions are not allowed in patterns
|
||||
|
||||
error[E0408]: variable `n` is not bound in all patterns
|
||||
--> $DIR/range_pat_interactions1.rs:10:25
|
||||
|
@ -12,6 +12,16 @@ LL | if let n @ 2..3|4 = x {
|
|||
| |
|
||||
| variable not in all patterns
|
||||
|
||||
error[E0658]: inline-const in pattern position is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:26:20
|
||||
|
|
||||
LL | y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
| ^^^^^
|
||||
|
|
||||
= note: see issue #76001 <https://github.com/rust-lang/rust/issues/76001> for more information
|
||||
= help: add `#![feature(inline_const_pat)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:10:20
|
||||
|
|
||||
|
@ -34,7 +44,62 @@ LL | } else if let 2..3 | 4 = x {
|
|||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:19:13
|
||||
|
|
||||
LL | 0..5+1 => errors_only.push(x),
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:22:17
|
||||
|
|
||||
LL | 1 | -3..0 => first_or.push(x),
|
||||
| ^^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:24:18
|
||||
|
|
||||
LL | y @ (0..5 | 6) => or_two.push(y),
|
||||
| ^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:26:17
|
||||
|
|
||||
LL | y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions1.rs:30:17
|
||||
|
|
||||
LL | y @ ..-7 => assert_eq!(y, -8),
|
||||
| ^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error: aborting due to 10 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0408, E0658.
|
||||
For more information about an error, try `rustc --explain E0408`.
|
||||
|
|
|
@ -8,12 +8,18 @@ fn main() {
|
|||
for x in -9 + 1..=(9 - 2) {
|
||||
match x as i32 {
|
||||
0..=(5+1) => errors_only.push(x),
|
||||
//~^ error: expected `)`, found `+`
|
||||
//~^ error: expected a pattern range bound, found an expression
|
||||
//~| error: range pattern bounds cannot have parentheses
|
||||
1 | -3..0 => first_or.push(x),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y @ (0..5 | 6) => or_two.push(y),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
//~^ error: inline-const in pattern position is experimental
|
||||
//~| error: exclusive range pattern syntax is experimental
|
||||
y @ -5.. => range_from.push(y),
|
||||
y @ ..-7 => assert_eq!(y, -8),
|
||||
//~^ error: exclusive range pattern syntax is experimental
|
||||
y => bottom.push(y),
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,75 @@
|
|||
error: expected `)`, found `+`
|
||||
--> $DIR/range_pat_interactions2.rs:10:19
|
||||
error: expected a pattern range bound, found an expression
|
||||
--> $DIR/range_pat_interactions2.rs:10:18
|
||||
|
|
||||
LL | 0..=(5+1) => errors_only.push(x),
|
||||
| ^ expected `)`
|
||||
| ^^^ arbitrary expressions are not allowed in patterns
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
error: range pattern bounds cannot have parentheses
|
||||
--> $DIR/range_pat_interactions2.rs:10:17
|
||||
|
|
||||
LL | 0..=(5+1) => errors_only.push(x),
|
||||
| ^ ^
|
||||
|
|
||||
help: remove these parentheses
|
||||
|
|
||||
LL - 0..=(5+1) => errors_only.push(x),
|
||||
LL + 0..=5+1 => errors_only.push(x),
|
||||
|
|
||||
|
||||
error[E0658]: inline-const in pattern position is experimental
|
||||
--> $DIR/range_pat_interactions2.rs:17:20
|
||||
|
|
||||
LL | y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
| ^^^^^
|
||||
|
|
||||
= note: see issue #76001 <https://github.com/rust-lang/rust/issues/76001> for more information
|
||||
= help: add `#![feature(inline_const_pat)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions2.rs:13:17
|
||||
|
|
||||
LL | 1 | -3..0 => first_or.push(x),
|
||||
| ^^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions2.rs:15:18
|
||||
|
|
||||
LL | y @ (0..5 | 6) => or_two.push(y),
|
||||
| ^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions2.rs:17:17
|
||||
|
|
||||
LL | y @ 0..const { 5 + 1 } => assert_eq!(y, 5),
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error[E0658]: exclusive range pattern syntax is experimental
|
||||
--> $DIR/range_pat_interactions2.rs:21:17
|
||||
|
|
||||
LL | y @ ..-7 => assert_eq!(y, -8),
|
||||
| ^^^^
|
||||
|
|
||||
= note: see issue #37854 <https://github.com/rust-lang/rust/issues/37854> for more information
|
||||
= help: add `#![feature(exclusive_range_pattern)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
= help: use an inclusive range pattern, like N..=M
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue