@@ -105,6 +105,9 @@ impl SpanHandler {
105105 pub fn span_end_note ( & self , sp : Span , msg : & str ) {
106106 self . handler . custom_emit ( & self . cm , FullSpan ( sp) , msg, Note ) ;
107107 }
108+ pub fn span_help ( & self , sp : Span , msg : & str ) {
109+ self . handler . emit ( Some ( ( & self . cm , sp) ) , msg, Help ) ;
110+ }
108111 pub fn fileline_note ( & self , sp : Span , msg : & str ) {
109112 self . handler . custom_emit ( & self . cm , FileLine ( sp) , msg, Note ) ;
110113 }
@@ -164,6 +167,9 @@ impl Handler {
164167 pub fn note ( & self , msg : & str ) {
165168 self . emit . borrow_mut ( ) . emit ( None , msg, None , Note ) ;
166169 }
170+ pub fn help ( & self , msg : & str ) {
171+ self . emit . borrow_mut ( ) . emit ( None , msg, None , Help ) ;
172+ }
167173 pub fn bug ( & self , msg : & str ) -> ! {
168174 self . emit . borrow_mut ( ) . emit ( None , msg, None , Bug ) ;
169175 fail ! ( ExplicitBug ) ;
@@ -216,6 +222,7 @@ pub enum Level {
216222 Error ,
217223 Warning ,
218224 Note ,
225+ Help ,
219226}
220227
221228impl fmt:: Show for Level {
@@ -227,6 +234,7 @@ impl fmt::Show for Level {
227234 Fatal | Error => "error" . fmt ( f) ,
228235 Warning => "warning" . fmt ( f) ,
229236 Note => "note" . fmt ( f) ,
237+ Help => "help" . fmt ( f) ,
230238 }
231239 }
232240}
@@ -236,7 +244,8 @@ impl Level {
236244 match self {
237245 Bug | Fatal | Error => term:: color:: BRIGHT_RED ,
238246 Warning => term:: color:: BRIGHT_YELLOW ,
239- Note => term:: color:: BRIGHT_GREEN
247+ Note => term:: color:: BRIGHT_GREEN ,
248+ Help => term:: color:: BRIGHT_CYAN ,
240249 }
241250 }
242251}
@@ -293,15 +302,6 @@ fn print_diagnostic(dst: &mut EmitterWriter, topic: &str, lvl: Level,
293302 Some ( code) => {
294303 let style = term:: attr:: ForegroundColor ( term:: color:: BRIGHT_MAGENTA ) ;
295304 try!( print_maybe_styled ( dst, format ! ( " [{}]" , code. clone( ) ) . as_slice ( ) , style) ) ;
296- match dst. registry . as_ref ( ) . and_then ( |registry| registry. find_description ( code) ) {
297- Some ( _) => {
298- try!( write ! ( & mut dst. dst,
299- " (pass `--explain {}` to see a detailed explanation)" ,
300- code
301- ) ) ;
302- }
303- None => ( )
304- }
305305 }
306306 None => ( )
307307 }
@@ -401,7 +401,20 @@ fn emit(dst: &mut EmitterWriter, cm: &codemap::CodeMap, rsp: RenderSpan,
401401 try!( highlight_lines ( dst, cm, sp, lvl, lines) ) ;
402402 }
403403 }
404- print_macro_backtrace ( dst, cm, sp)
404+ try!( print_macro_backtrace ( dst, cm, sp) ) ;
405+ match code {
406+ Some ( code) =>
407+ match dst. registry . as_ref ( ) . and_then ( |registry| registry. find_description ( code) ) {
408+ Some ( _) => {
409+ try!( print_diagnostic ( dst, ss. as_slice ( ) , Help ,
410+ format ! ( "pass `--explain {}` to see a detailed \
411+ explanation", code) . as_slice ( ) , None ) ) ;
412+ }
413+ None => ( )
414+ } ,
415+ None => ( ) ,
416+ }
417+ Ok ( ( ) )
405418}
406419
407420fn highlight_lines ( err : & mut EmitterWriter ,
0 commit comments