-
Notifications
You must be signed in to change notification settings - Fork 13.9k
Closed
Labels
A-type-systemArea: Type systemArea: Type system
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.
Metadata
Metadata
Assignees
Labels
A-type-systemArea: Type systemArea: Type system