about summary refs log tree commit diff
path: root/src/libsyntax/parse
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2016-01-13 20:38:12 +0000
committerbors <bors@rust-lang.org>2016-01-13 20:38:12 +0000
commit6089ebaddb8a9d663f798c26eb2ca73a9514a59a (patch)
treed9ee23d4a6241bc0d97f6c3f003441b7f23e4c68 /src/libsyntax/parse
parentac9be00ecc3492b58b60b91cf2ce7d2a36ebb4d2 (diff)
parente61d21fe3d59797f0bc30ded9e943bfe9f5364e4 (diff)
downloadrust-6089ebaddb8a9d663f798c26eb2ca73a9514a59a.tar.gz
rust-6089ebaddb8a9d663f798c26eb2ca73a9514a59a.zip
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.
Diffstat (limited to 'src/libsyntax/parse')
-rw-r--r--src/libsyntax/parse/parser.rs10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index e089e630e57..bfa42e76129 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -4046,10 +4046,12 @@ impl<'a> Parser<'a> {
             let mut err = self.diagnostic().struct_span_err(self.span, &msg);
 
             let span_hi = self.span.hi;
-            let span_hi = if self.parse_ty().is_ok() {
-                self.span.hi
-            } else {
-                span_hi
+            let span_hi = match self.parse_ty() {
+                Ok(..) => self.span.hi,
+                Err(ref mut err) => {
+                    err.cancel();
+                    span_hi
+                }
             };
 
             let msg = format!("did you mean a single argument type &'a Type, \