From b69347c00c755955ce0c49c3495eb9f7e18439e5 Mon Sep 17 00:00:00 2001 From: Marcus Klaas Date: Sun, 30 Aug 2015 20:43:09 +0200 Subject: [PATCH] Assign correct span to continue expression Fixes https://github.com/rust-lang/rust/issues/28105. --- src/libsyntax/parse/parser.rs | 1 - src/test/compile-fail/issue-28105.rs | 23 +++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 src/test/compile-fail/issue-28105.rs diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index e6242690ac0d0..4966215a9f2d3 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2142,7 +2142,6 @@ impl<'a> Parser<'a> { return self.parse_loop_expr(None, lo); } if try!(self.eat_keyword(keywords::Continue) ){ - let lo = self.span.lo; let ex = if self.token.is_lifetime() { let lifetime = self.get_lifetime(); try!(self.bump()); diff --git a/src/test/compile-fail/issue-28105.rs b/src/test/compile-fail/issue-28105.rs new file mode 100644 index 0000000000000..6ae635877b78b --- /dev/null +++ b/src/test/compile-fail/issue-28105.rs @@ -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 or the MIT license +// , 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; + } + } +}