Rollup merge of #23467 - andersk:loop-labeled-break-value, r=sanxiyn

Closes #23451.
This commit is contained in:
Manish Goregaokar 2015-03-18 14:39:07 +05:30
commit a7eca31d80
3 changed files with 40 additions and 1 deletions

View File

@ -5240,7 +5240,7 @@ pub fn may_break(cx: &ty::ctxt, id: ast::NodeId, b: &ast::Block) -> bool {
// inside the loop?
(loop_query(&*b, |e| {
match *e {
ast::ExprBreak(_) => true,
ast::ExprBreak(None) => true,
_ => false
}
})) ||

View File

@ -0,0 +1,21 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
fn main() {
loop {
let _: i32 = loop { break }; //~ ERROR mismatched types
}
loop {
let _: i32 = 'inner: loop { break 'inner }; //~ ERROR mismatched types
}
loop {
let _: i32 = 'inner: loop { loop { break 'inner } }; //~ ERROR mismatched types
}
}

View File

@ -0,0 +1,18 @@
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
fn main() {
'outer: loop {
let _: i32 = loop { break 'outer };
}
'outer: loop {
let _: i32 = loop { loop { break 'outer } };
}
}