mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-27 22:57:23 +00:00
59 lines
1.6 KiB
Rust
59 lines
1.6 KiB
Rust
// Here we test Rust 2024 edition 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 chains are only allowed in Rust 2024 or later
|
||
|
||
if let 0 = 1 && true {}
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
|
||
if let Range { start: _, end: _ } = (true..true) && false {}
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
|
||
if let 1 = 1 && let true = { true } && false {
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
//~| ERROR let chains are only allowed in Rust 2024 or later
|
||
}
|
||
}
|
||
|
||
fn _while() {
|
||
while let 0 = 1 {} // Stable!
|
||
|
||
while true && let 0 = 1 {}
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
|
||
while let 0 = 1 && true {}
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
|
||
while let Range { start: _, end: _ } = (true..true) && false {}
|
||
//~^ ERROR let chains are only allowed in Rust 2024 or later
|
||
}
|
||
|
||
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() {}
|