mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 14:55:26 +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