Much like the previous commit. I think the removal of "the token" in each message is fine here. There are many more error messages that mention tokens without saying "the token" than those that do say it.
61 lines
1.6 KiB
Rust
61 lines
1.6 KiB
Rust
// gate-test-let_chains
|
||
|
||
// Here we test feature gating for ´let_chains`.
|
||
// See `disallowed-positions.rs` for the grammar
|
||
// defining the language for gated allowed positions.
|
||
|
||
#![allow(irrefutable_let_patterns)]
|
||
|
||
use std::ops::Range;
|
||
|
||
fn _if() {
|
||
if let 0 = 1 {} // Stable!
|
||
|
||
if true && let 0 = 1 {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
|
||
if let 0 = 1 && true {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
|
||
if let Range { start: _, end: _ } = (true..true) && false {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
|
||
if let 1 = 1 && let true = { true } && false {
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
//~| ERROR `let` expressions in this position are unstable [E0658]
|
||
}
|
||
}
|
||
|
||
fn _while() {
|
||
while let 0 = 1 {} // Stable!
|
||
|
||
while true && let 0 = 1 {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
|
||
while let 0 = 1 && true {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
|
||
while let Range { start: _, end: _ } = (true..true) && false {}
|
||
//~^ ERROR `let` expressions in this position are unstable [E0658]
|
||
}
|
||
|
||
fn _macros() {
|
||
macro_rules! noop_expr { ($e:expr) => {}; }
|
||
|
||
noop_expr!((let 0 = 1));
|
||
//~^ ERROR expected expression, found `let` statement
|
||
|
||
macro_rules! use_expr {
|
||
($e:expr) => {
|
||
if $e {}
|
||
while $e {}
|
||
}
|
||
}
|
||
#[cfg(FALSE)] (let 0 = 1);
|
||
//~^ ERROR expected expression, found `let` statement
|
||
use_expr!(let 0 = 1);
|
||
//~^ ERROR no rules expected keyword `let`
|
||
}
|
||
|
||
fn main() {}
|