@@ -44,9 +44,21 @@ pub fn render_with_highlighting(src: &str, class: Option<&str>,
4444 }
4545 write_header ( class, & mut out) . unwrap ( ) ;
4646
47- let mut classifier = Classifier :: new ( lexer:: StringReader :: new ( & sess, fm, None ) ,
48- sess. source_map ( ) ) ;
47+ let lexer = match lexer:: StringReader :: new_without_err ( & sess, fm, None , "Output from rustc:" ) {
48+ Ok ( l) => l,
49+ Err ( _) => {
50+ let first_line = src. lines ( ) . next ( ) . unwrap_or_else ( || "" ) ;
51+ let mut err = sess. span_diagnostic
52+ . struct_warn ( & format ! ( "Invalid doc comment starting with: `{}`\n \
53+ (Ignoring this codeblock)",
54+ first_line) ) ;
55+ err. emit ( ) ;
56+ return String :: new ( ) ;
57+ }
58+ } ;
59+ let mut classifier = Classifier :: new ( lexer, sess. source_map ( ) ) ;
4960 if classifier. write_source ( & mut out) . is_err ( ) {
61+ classifier. lexer . emit_fatal_errors ( ) ;
5062 return format ! ( "<pre>{}</pre>" , src) ;
5163 }
5264
@@ -162,11 +174,10 @@ impl<'a> Classifier<'a> {
162174 match self . lexer . try_next_token ( ) {
163175 Ok ( tas) => Ok ( tas) ,
164176 Err ( _) => {
165- self . lexer . emit_fatal_errors ( ) ;
166- self . lexer . sess . span_diagnostic
167- . struct_warn ( "Backing out of syntax highlighting" )
168- . note ( "You probably did not intend to render this as a rust code-block" )
169- . emit ( ) ;
177+ let mut err = self . lexer . sess . span_diagnostic
178+ . struct_warn ( "Backing out of syntax highlighting" ) ;
179+ err. note ( "You probably did not intend to render this as a rust code-block" ) ;
180+ err. emit ( ) ;
170181 Err ( io:: Error :: new ( io:: ErrorKind :: Other , "" ) )
171182 }
172183 }
0 commit comments