Closed
Description
The expression loop {break}
has type ()
, as it must. However, within a second loop labeled 'outer
, the expression loop {break 'outer}
should have type !
, not ()
. Note that break 'outer
and even loop {loop {break 'outer}}
are already correctly typed as !
.
Example with incorrect type error:
fn foo() {
'outer: loop {
let a : i32;
a = break 'outer // ok
}
}
fn bar() {
'outer: loop {
let a : i32;
a = loop {break 'outer} // error: mismatched types: expected i32, found ()
}
}
fn baz() {
'outer: loop {
let a : i32;
a = loop {loop {break 'outer}} // ok
}
}
I’m using rustc 1.0.0-dev (built 2015-03-17) from ppa:hansjorg/rust.