42 lines
1.3 KiB
Rust
42 lines
1.3 KiB
Rust
// Due to a compiler bug, if a return occurs outside of a function body
|
|
// (e.g. in an AnonConst body), the return value expression would not be
|
|
// type-checked, leading to an ICE. This test checks that the ICE no
|
|
// longer happens, and that an appropriate error message is issued that
|
|
// also explains why the return is considered "outside of a function body"
|
|
// if it seems to be inside one, as in the main function below.
|
|
|
|
const C: [(); 42] = {
|
|
[(); return || {
|
|
//~^ ERROR: return statement outside of function body [E0572]
|
|
let tx;
|
|
}]
|
|
};
|
|
|
|
struct S {}
|
|
trait Tr {
|
|
fn foo();
|
|
fn bar() {
|
|
//~^ NOTE: ...not the enclosing function body
|
|
[(); return];
|
|
//~^ ERROR: return statement outside of function body [E0572]
|
|
//~| NOTE: the return is part of this body...
|
|
}
|
|
}
|
|
impl Tr for S {
|
|
fn foo() {
|
|
//~^ NOTE: ...not the enclosing function body
|
|
[(); return];
|
|
//~^ ERROR: return statement outside of function body [E0572]
|
|
//~| NOTE: the return is part of this body...
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
//~^ NOTE: ...not the enclosing function body
|
|
[(); return || {
|
|
//~^ ERROR: return statement outside of function body [E0572]
|
|
//~| NOTE: the return is part of this body...
|
|
let tx;
|
|
}];
|
|
}
|