mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 06:44:35 +00:00
Add test cases
This commit is contained in:
parent
a00df61387
commit
7347beed88
46
tests/ui/inline-const/cross_const_control_flow.rs
Normal file
46
tests/ui/inline-const/cross_const_control_flow.rs
Normal file
@ -0,0 +1,46 @@
|
||||
//@edition:2021
|
||||
|
||||
fn foo() {
|
||||
const { return }
|
||||
//~^ ERROR: return statement outside of function body
|
||||
}
|
||||
|
||||
fn labelled_block_break() {
|
||||
'a: { const { break 'a } }
|
||||
//~^ ERROR: `break` outside of a loop or labeled block
|
||||
//~| ERROR: use of unreachable label
|
||||
}
|
||||
|
||||
fn loop_break() {
|
||||
loop {
|
||||
const { break }
|
||||
//~^ ERROR: `break` outside of a loop or labeled block
|
||||
}
|
||||
}
|
||||
|
||||
fn continue_to_labelled_block() {
|
||||
'a: { const { continue 'a } }
|
||||
//~^ ERROR: `continue` outside of a loop
|
||||
//~| ERROR: use of unreachable label
|
||||
}
|
||||
|
||||
fn loop_continue() {
|
||||
loop {
|
||||
const { continue }
|
||||
//~^ ERROR: `continue` outside of a loop
|
||||
}
|
||||
}
|
||||
|
||||
async fn await_across_const_block() {
|
||||
const { async {}.await }
|
||||
//~^ ERROR: `await` is only allowed inside `async` functions and blocks
|
||||
}
|
||||
|
||||
fn reference_to_non_constant_in_const_block() {
|
||||
let x = 1;
|
||||
const { &x };
|
||||
//~^ ERROR: attempt to use a non-constant value in a constant
|
||||
}
|
||||
|
||||
|
||||
fn main() {}
|
78
tests/ui/inline-const/cross_const_control_flow.stderr
Normal file
78
tests/ui/inline-const/cross_const_control_flow.stderr
Normal file
@ -0,0 +1,78 @@
|
||||
error[E0767]: use of unreachable label `'a`
|
||||
--> $DIR/cross_const_control_flow.rs:9:25
|
||||
|
|
||||
LL | 'a: { const { break 'a } }
|
||||
| -- ^^ unreachable label `'a`
|
||||
| |
|
||||
| unreachable label defined here
|
||||
|
|
||||
= note: labels are unreachable through functions, closures, async blocks and modules
|
||||
|
||||
error[E0767]: use of unreachable label `'a`
|
||||
--> $DIR/cross_const_control_flow.rs:22:28
|
||||
|
|
||||
LL | 'a: { const { continue 'a } }
|
||||
| -- ^^ unreachable label `'a`
|
||||
| |
|
||||
| unreachable label defined here
|
||||
|
|
||||
= note: labels are unreachable through functions, closures, async blocks and modules
|
||||
|
||||
error[E0435]: attempt to use a non-constant value in a constant
|
||||
--> $DIR/cross_const_control_flow.rs:41:14
|
||||
|
|
||||
LL | const { &x };
|
||||
| ^ non-constant value
|
||||
|
|
||||
help: consider using `const` instead of `let`
|
||||
|
|
||||
LL | const x: /* Type */ = 1;
|
||||
| ~~~~~ ++++++++++++
|
||||
|
||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||
--> $DIR/cross_const_control_flow.rs:35:22
|
||||
|
|
||||
LL | const { async {}.await }
|
||||
| -----------^^^^^--
|
||||
| | |
|
||||
| | only allowed inside `async` functions and blocks
|
||||
| this is not `async`
|
||||
|
||||
error[E0268]: `break` outside of a loop or labeled block
|
||||
--> $DIR/cross_const_control_flow.rs:9:19
|
||||
|
|
||||
LL | 'a: { const { break 'a } }
|
||||
| ^^^^^^^^ cannot `break` outside of a loop or labeled block
|
||||
|
||||
error[E0268]: `break` outside of a loop or labeled block
|
||||
--> $DIR/cross_const_control_flow.rs:16:17
|
||||
|
|
||||
LL | const { break }
|
||||
| ^^^^^ cannot `break` outside of a loop or labeled block
|
||||
|
||||
error[E0268]: `continue` outside of a loop
|
||||
--> $DIR/cross_const_control_flow.rs:22:19
|
||||
|
|
||||
LL | 'a: { const { continue 'a } }
|
||||
| ^^^^^^^^^^^ cannot `continue` outside of a loop
|
||||
|
||||
error[E0268]: `continue` outside of a loop
|
||||
--> $DIR/cross_const_control_flow.rs:29:17
|
||||
|
|
||||
LL | const { continue }
|
||||
| ^^^^^^^^ cannot `continue` outside of a loop
|
||||
|
||||
error[E0572]: return statement outside of function body
|
||||
--> $DIR/cross_const_control_flow.rs:4:13
|
||||
|
|
||||
LL | / fn foo() {
|
||||
LL | | const { return }
|
||||
| | --^^^^^^-- the return is part of this body...
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_- ...not the enclosing function body
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0268, E0435, E0572, E0728, E0767.
|
||||
For more information about an error, try `rustc --explain E0268`.
|
Loading…
Reference in New Issue
Block a user