Auto merge of #53933 - GuillaumeGomez:codeblock-error-display, r=QuietMisdreavus
Improve error display for codeblocks in rustdoc Part of #53919. r? @QuietMisdreavus
This commit is contained in:
commit
849a0e9c40
4 changed files with 58 additions and 7 deletions
|
|
@ -44,9 +44,21 @@ pub fn render_with_highlighting(src: &str, class: Option<&str>,
|
|||
}
|
||||
write_header(class, &mut out).unwrap();
|
||||
|
||||
let mut classifier = Classifier::new(lexer::StringReader::new(&sess, fm, None),
|
||||
sess.source_map());
|
||||
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(|| "");
|
||||
let mut err = sess.span_diagnostic
|
||||
.struct_warn(&format!("Invalid doc comment starting with: `{}`\n\
|
||||
(Ignoring this codeblock)",
|
||||
first_line));
|
||||
err.emit();
|
||||
return String::new();
|
||||
}
|
||||
};
|
||||
let mut classifier = Classifier::new(lexer, sess.source_map());
|
||||
if classifier.write_source(&mut out).is_err() {
|
||||
classifier.lexer.emit_fatal_errors();
|
||||
return format!("<pre>{}</pre>", src);
|
||||
}
|
||||
|
||||
|
|
@ -162,11 +174,10 @@ impl<'a> Classifier<'a> {
|
|||
match self.lexer.try_next_token() {
|
||||
Ok(tas) => Ok(tas),
|
||||
Err(_) => {
|
||||
self.lexer.emit_fatal_errors();
|
||||
self.lexer.sess.span_diagnostic
|
||||
.struct_warn("Backing out of syntax highlighting")
|
||||
.note("You probably did not intend to render this as a rust code-block")
|
||||
.emit();
|
||||
let mut err = self.lexer.sess.span_diagnostic
|
||||
.struct_warn("Backing out of syntax highlighting");
|
||||
err.note("You probably did not intend to render this as a rust code-block");
|
||||
err.emit();
|
||||
Err(io::Error::new(io::ErrorKind::Other, ""))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue