11use crate :: formatting:: FormattingError ;
22use crate :: { ErrorKind , FormatReport } ;
3- use annotate_snippets:: { Annotation , Level , Renderer , Snippet } ;
3+ use annotate_snippets:: { Annotation , AnnotationKind , Group , Level , Renderer , Snippet } ;
44use std:: fmt:: { self , Display } ;
55
66/// A builder for [`FormatReportFormatter`].
@@ -57,26 +57,22 @@ impl<'a> Display for FormatReportFormatter<'a> {
5757 for ( file, errors) in errors_by_file {
5858 for error in errors {
5959 let error_kind = error. kind . to_string ( ) ;
60- let mut message =
61- error_kind_to_snippet_annotation_level ( & error. kind ) . title ( & error_kind) ;
60+ let mut title =
61+ error_kind_to_snippet_annotation_level ( & error. kind ) . primary_title ( error_kind) ;
6262 if error. is_internal ( ) {
63- message = message . id ( "internal" ) ;
63+ title = title . id ( "internal" ) ;
6464 }
65-
66- let message_suffix = error. msg_suffix ( ) ;
67- if !message_suffix. is_empty ( ) {
68- message = message. footer ( Level :: Note . title ( & message_suffix) ) ;
69- }
70-
71- let origin = format ! ( "{}:{}" , file, error. line) ;
7265 let snippet = Snippet :: source ( & error. line_buffer )
7366 . line_start ( error. line )
74- . origin ( & origin )
67+ . path ( format ! ( "{file}:{}" , error . line ) )
7568 . fold ( false )
7669 . annotations ( annotation ( error) ) ;
77- message = message. snippet ( snippet) ;
78-
79- writeln ! ( f, "{}\n " , renderer. render( message) ) ?;
70+ let mut group = title. element ( snippet) ;
71+ let message_suffix = error. msg_suffix ( ) ;
72+ if !message_suffix. is_empty ( ) {
73+ group = group. element ( Level :: NOTE . message ( message_suffix) ) ;
74+ }
75+ writeln ! ( f, "{}\n " , renderer. render( & [ group] ) ) ?;
8076 }
8177 }
8278
@@ -85,10 +81,9 @@ impl<'a> Display for FormatReportFormatter<'a> {
8581 "rustfmt has failed to format. See previous {} errors." ,
8682 self . report. warning_count( )
8783 ) ;
88- let message = Level :: Warning . title ( & label) ;
89- writeln ! ( f, "{}" , renderer. render( message ) ) ?;
84+ let group = Group :: with_title ( Level :: WARNING . primary_title ( label) ) ;
85+ writeln ! ( f, "{}" , renderer. render( & [ group ] ) ) ?;
9086 }
91-
9287 Ok ( ( ) )
9388 }
9489}
@@ -98,13 +93,13 @@ fn annotation(error: &FormattingError) -> Option<Annotation<'_>> {
9893 let range_end = range_start + range_length;
9994
10095 if range_length > 0 {
101- Some ( Level :: Error . span ( range_start..range_end) )
96+ Some ( AnnotationKind :: Primary . span ( range_start..range_end) )
10297 } else {
10398 None
10499 }
105100}
106101
107- fn error_kind_to_snippet_annotation_level ( error_kind : & ErrorKind ) -> Level {
102+ fn error_kind_to_snippet_annotation_level ( error_kind : & ErrorKind ) -> Level < ' _ > {
108103 match error_kind {
109104 ErrorKind :: LineOverflow ( ..)
110105 | ErrorKind :: TrailingWhitespace
@@ -114,7 +109,7 @@ fn error_kind_to_snippet_annotation_level(error_kind: &ErrorKind) -> Level {
114109 | ErrorKind :: LostComment
115110 | ErrorKind :: BadAttr
116111 | ErrorKind :: InvalidGlobPattern ( _)
117- | ErrorKind :: VersionMismatch => Level :: Error ,
118- ErrorKind :: DeprecatedAttr => Level :: Warning ,
112+ | ErrorKind :: VersionMismatch => Level :: ERROR ,
113+ ErrorKind :: DeprecatedAttr => Level :: WARNING ,
119114 }
120115}
0 commit comments