1
Fork 0

Assign correct span to continue expression

Fixes https://github.com/rust-lang/rust/issues/28105.
This commit is contained in:
Marcus Klaas 2015-08-30 20:43:09 +02:00
parent 4bb90232da
commit b69347c00c
2 changed files with 23 additions and 1 deletions

View file

@ -2142,7 +2142,6 @@ impl<'a> Parser<'a> {
return self.parse_loop_expr(None, lo); return self.parse_loop_expr(None, lo);
} }
if try!(self.eat_keyword(keywords::Continue) ){ if try!(self.eat_keyword(keywords::Continue) ){
let lo = self.span.lo;
let ex = if self.token.is_lifetime() { let ex = if self.token.is_lifetime() {
let lifetime = self.get_lifetime(); let lifetime = self.get_lifetime();
try!(self.bump()); try!(self.bump());

View file

@ -0,0 +1,23 @@
// Copyright 2012-2014 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.
// Make sure that a continue span actually contains the keyword.
fn main() {
'a: loop {
if false {
continue //~ ERROR use of undeclared label
'b;
} else {
break //~ ERROR use of undeclared label
'c;
}
}
}