From f7240e1c74fd19d09e183cedc7dd569c59a4bbd5 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Mon, 3 Sep 2018 22:24:11 +0200 Subject: Improve error display for codeblocks in rustdoc --- src/libsyntax/parse/lexer/mod.rs | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src/libsyntax') diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index aa47d5bf669..7132dc342d2 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -238,6 +238,17 @@ impl<'a> StringReader<'a> { sr } + pub fn new_without_err(sess: &'a ParseSess, + source_file: Lrc, + override_span: Option) -> Result { + let mut sr = StringReader::new_raw(sess, source_file, override_span); + if sr.advance_token().is_err() { + sr.emit_fatal_errors(); + return Err(()); + } + Ok(sr) + } + pub fn retokenize(sess: &'a ParseSess, mut span: Span) -> Self { let begin = sess.source_map().lookup_byte_offset(span.lo()); let end = sess.source_map().lookup_byte_offset(span.hi()); -- cgit 1.4.1-3-g733a5 From 322e46916e8251821543769ada7e38d6e4532da4 Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Sat, 29 Sep 2018 18:34:49 +0200 Subject: Add a sentence before rustc errors --- src/librustdoc/html/highlight.rs | 2 +- src/libsyntax/parse/lexer/mod.rs | 4 +++- src/test/rustdoc-ui/invalid-syntax.stderr | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) (limited to 'src/libsyntax') diff --git a/src/librustdoc/html/highlight.rs b/src/librustdoc/html/highlight.rs index a83f80dcc34..87b4527a2a7 100644 --- a/src/librustdoc/html/highlight.rs +++ b/src/librustdoc/html/highlight.rs @@ -44,7 +44,7 @@ pub fn render_with_highlighting(src: &str, class: Option<&str>, } write_header(class, &mut out).unwrap(); - let lexer = match lexer::StringReader::new_without_err(&sess, fm, None) { + let lexer = match lexer::StringReader::new_without_err(&sess, fm, None, "Output from rustc:") { Ok(l) => l, Err(_) => { let first_line = src.lines().next().unwrap_or_else(|| ""); diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index 7132dc342d2..a814c88ee78 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -240,9 +240,11 @@ impl<'a> StringReader<'a> { pub fn new_without_err(sess: &'a ParseSess, source_file: Lrc, - override_span: Option) -> Result { + override_span: Option, + prepend_error_text: &str) -> Result { let mut sr = StringReader::new_raw(sess, source_file, override_span); if sr.advance_token().is_err() { + eprintln!("{}", prepend_error_text); sr.emit_fatal_errors(); return Err(()); } diff --git a/src/test/rustdoc-ui/invalid-syntax.stderr b/src/test/rustdoc-ui/invalid-syntax.stderr index 0661f0ab005..b5661332e8d 100644 --- a/src/test/rustdoc-ui/invalid-syntax.stderr +++ b/src/test/rustdoc-ui/invalid-syntax.stderr @@ -1,3 +1,4 @@ +Output from rustc: error: unknown start of token: / --> :1:1 | -- cgit 1.4.1-3-g733a5