blob: 06c513aa8457b47f8569e3b167533d6f791da1e3 [file] [log] [blame] [edit]
struct Foo {
t: String,
}
fn cond() -> bool {
true
}
fn foo<F>(_: F)
where
F: FnOnce(),
{
}
fn main() {
let pth = break; //~ ERROR: `break` outside of a loop
if cond() {
continue; //~ ERROR: `continue` outside of a loop
}
while cond() {
if cond() {
break;
}
if cond() {
continue;
}
foo(|| {
if cond() {
break; //~ ERROR: `break` inside of a closure
}
if cond() {
continue; //~ ERROR: `continue` inside of a closure
}
})
}
let rs: Foo = Foo { t: pth };
let unconstrained = break; //~ ERROR: `break` outside of a loop
// This used to ICE because `target_id` passed to `check_expr_break` would be the closure and
// not the `loop`, which failed in the call to `find_breakable`. (#65383)
'lab: loop {
|| {
break 'lab;
//~^ ERROR use of unreachable label `'lab`
//~| ERROR `break` inside of a closure
};
}
// Make sure that a continue span actually contains the keyword. (#28105)
continue //~ ERROR `continue` outside of a loop
;
break //~ ERROR `break` outside of a loop
;
}