Skip to content

Commit 6089eba

Browse files
committed
Auto merge of #30813 - fhahn:fix-ice-semicolon-in-lifetime, r=nrc
This PR fixes an ICE due to an DiagnosticsBuilder not being canceld or emitted. Ideally it would use `Handler::cancel`, but I did not manage to get a `&mut` reference to the diagnostics handler.
2 parents ac9be00 + e61d21f commit 6089eba

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4046,10 +4046,12 @@ impl<'a> Parser<'a> {
40464046
let mut err = self.diagnostic().struct_span_err(self.span, &msg);
40474047

40484048
let span_hi = self.span.hi;
4049-
let span_hi = if self.parse_ty().is_ok() {
4050-
self.span.hi
4051-
} else {
4052-
span_hi
4049+
let span_hi = match self.parse_ty() {
4050+
Ok(..) => self.span.hi,
4051+
Err(ref mut err) => {
4052+
err.cancel();
4053+
span_hi
4054+
}
40534055
};
40544056

40554057
let msg = format!("did you mean a single argument type &'a Type, \
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// compile-flags: -Z parse-only
12+
13+
struct Foo<'a, 'b> {
14+
a: &'a &'b i32
15+
}
16+
17+
fn foo<'a, 'b>(x: &mut Foo<'a; 'b>) {}
18+
//~^ ERROR expected `,` or `>` after lifetime name, found `;`
19+
//~^^ NOTE did you mean a single argument type &'a Type, or did you mean the comma-separated

0 commit comments

Comments
 (0)