// 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; }]; }