about summary refs log tree commit diff
path: root/src/libsyntax
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2019-02-05 01:35:25 -0800
committerEsteban Küber <esteban@kuber.com.ar>2019-02-07 01:42:54 -0800
commit99be87aac3b9af941e74b8681643e1963ce75671 (patch)
treeb18c23ebee3a4c5d52a0f0391141002d50e3d12b /src/libsyntax
parent7451cd8dc0b20c012fad1886b321c3dee2052577 (diff)
downloadrust-99be87aac3b9af941e74b8681643e1963ce75671.tar.gz
rust-99be87aac3b9af941e74b8681643e1963ce75671.zip
unify error handling to single method
Diffstat (limited to 'src/libsyntax')
-rw-r--r--src/libsyntax/parse/mod.rs1
-rw-r--r--src/libsyntax/parse/parser.rs36
-rw-r--r--src/libsyntax/parse/token.rs22
3 files changed, 25 insertions, 34 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs
index 52c7e774ab6..317d6933207 100644
--- a/src/libsyntax/parse/mod.rs
+++ b/src/libsyntax/parse/mod.rs
@@ -275,6 +275,7 @@ pub fn maybe_file_to_stream(
         Err(err) => {
             let mut buffer = Vec::with_capacity(1);
             err.buffer(&mut buffer);
+            // Not using `emit_unclosed_delims` to use `db.buffer`
             for unmatched in srdr.unmatched_braces {
                 let mut db = sess.span_diagnostic.struct_span_err(unmatched.found_span, &format!(
                     "incorrect close delimiter: `{}`",
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 2e605ab6544..4a932ab7bd1 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -724,7 +724,7 @@ impl<'a> Parser<'a> {
                 if let Some(sp) = unmatched.unclosed_span {
                     err.span_label(sp, "in order to close this...");
                 }
-                err.span_suggestion_short_with_applicability(
+                err.span_suggestion_short(
                     self.sess.source_map().next_point(self.prev_span),
                     &format!("{} may belong here", delim.to_string()),
                     delim.to_string(),
@@ -1180,7 +1180,7 @@ impl<'a> Parser<'a> {
                     //     self.struct_span_err(
                     //         self.span,
                     //         &format!("expected `>`, found `{}`", self.this_token_to_string()),
-                    //     // ).span_suggestion_short_with_applicability(
+                    //     // ).span_suggestion_short(
                     //     ).emit();
                     //     Ok(())
                     // }
@@ -8503,20 +8503,7 @@ impl<'a> Parser<'a> {
             module: self.parse_mod_items(&token::Eof, lo)?,
             span: lo.to(self.span),
         });
-        for unmatched in &self.unclosed_delims {
-            let mut err = self.struct_span_err(unmatched.found_span, &format!(
-                "incorrect close delimiter: `{}`",
-                pprust::token_to_string(&token::Token::CloseDelim(unmatched.found_delim)),
-            ));
-            err.span_label(unmatched.found_span, "incorrect close delimiter");
-            if let Some(sp) = unmatched.candidate_span {
-                err.span_label(sp, "close delimiter possibly meant for this");
-            }
-            if let Some(sp) = unmatched.unclosed_span {
-                err.span_label(sp, "un-closed delimiter");
-            }
-            err.emit();
-        }
+        emit_unclosed_delims(&self.unclosed_delims, self.diagnostic());
         self.unclosed_delims.clear();
         krate
     }
@@ -8547,3 +8534,20 @@ impl<'a> Parser<'a> {
         }
     }
 }
+
+pub fn emit_unclosed_delims(unclosed_delims: &[UnmatchedBrace], handler: &errors::Handler) {
+    for unmatched in unclosed_delims {
+        let mut err = handler.struct_span_err(unmatched.found_span, &format!(
+            "incorrect close delimiter: `{}`",
+            pprust::token_to_string(&token::Token::CloseDelim(unmatched.found_delim)),
+        ));
+        err.span_label(unmatched.found_span, "incorrect close delimiter");
+        if let Some(sp) = unmatched.candidate_span {
+            err.span_label(sp, "close delimiter possibly meant for this");
+        }
+        if let Some(sp) = unmatched.unclosed_span {
+            err.span_label(sp, "un-closed delimiter");
+        }
+        err.emit();
+    }
+}
\ No newline at end of file
diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs
index a0f3113a1cb..d144223d1b8 100644
--- a/src/libsyntax/parse/token.rs
+++ b/src/libsyntax/parse/token.rs
@@ -10,6 +10,7 @@ use crate::print::pprust;
 use crate::ptr::P;
 use crate::symbol::keywords;
 use crate::syntax::parse::parse_stream_from_source_str;
+use crate::syntax::parse::parser::emit_unclosed_delims;
 use crate::tokenstream::{self, DelimSpan, TokenStream, TokenTree};
 
 use serialize::{Decodable, Decoder, Encodable, Encoder};
@@ -547,12 +548,7 @@ impl Token {
             let filename = FileName::macro_expansion_source_code(&source);
             let (tokens, errors) = parse_stream_from_source_str(
                 filename, source, sess, Some(span));
-            for err in errors {
-                sess.span_diagnostic.struct_span_err(
-                    err.found_span,
-                    "unclosed delimiter for_real",
-                ).emit();
-            }
+            emit_unclosed_delims(&errors, &sess.span_diagnostic);
             tokens
         });
 
@@ -800,12 +796,7 @@ fn prepend_attrs(sess: &ParseSess,
                 sess,
                 Some(span),
             );
-            for err in errors {
-                sess.span_diagnostic.struct_span_err(
-                    err.found_span,
-                    "unclosed delimiter attrs",
-                ).emit();
-            }
+            emit_unclosed_delims(&errors, &sess.span_diagnostic);
             builder.push(stream);
             continue
         }
@@ -828,12 +819,7 @@ fn prepend_attrs(sess: &ParseSess,
                 sess,
                 Some(span),
             );
-            for err in errors {
-                sess.span_diagnostic.struct_span_err(
-                    err.found_span,
-                    "unclosed delimiter attrs 2",
-                ).emit();
-            }
+            emit_unclosed_delims(&errors, &sess.span_diagnostic);
             brackets.push(stream);
         }