@@ -116,13 +116,28 @@ fn annotation_level_for_level(level: Level) -> annotate_snippets::level::Level<'
116116 Level :: Fatal | Level :: Error => annotate_snippets:: level:: ERROR ,
117117 Level :: ForceWarning | Level :: Warning => annotate_snippets:: Level :: WARNING ,
118118 Level :: Note | Level :: OnceNote => annotate_snippets:: Level :: NOTE ,
119+ Level :: BulletPoint => annotate_snippets:: Level :: NOTE . no_name ( ) ,
119120 Level :: Help | Level :: OnceHelp => annotate_snippets:: Level :: HELP ,
120121 Level :: FailureNote => annotate_snippets:: Level :: NOTE . no_name ( ) ,
121122 Level :: Allow => panic ! ( "Should not call with Allow" ) ,
122123 Level :: Expect => panic ! ( "Should not call with Expect" ) ,
123124 }
124125}
125126
127+ fn message_level_for_level ( level : Level ) -> annotate_snippets:: level:: Level < ' static > {
128+ match level {
129+ Level :: BulletPoint => annotate_snippets:: Level :: NOTE . no_name ( ) ,
130+ _ => annotation_level_for_level ( level) ,
131+ }
132+ }
133+
134+ fn format_message_for_level ( level : Level , msg : Cow < ' static , str > ) -> Cow < ' static , str > {
135+ match level {
136+ Level :: BulletPoint => Cow :: Owned ( format ! ( " - {msg}" ) ) ,
137+ _ => msg,
138+ }
139+ }
140+
126141impl AnnotateSnippetEmitter {
127142 pub fn new ( dst : Destination ) -> Self {
128143 Self {
@@ -174,11 +189,26 @@ impl AnnotateSnippetEmitter {
174189
175190 // If we don't have span information, emit and exit
176191 let Some ( sm) = self . sm . as_ref ( ) else {
177- group = group. elements ( children. iter ( ) . map ( |c| {
178- let msg = format_diag_messages ( & c. messages , args) . to_string ( ) ;
179- let level = annotation_level_for_level ( c. level ) ;
180- level. message ( msg)
181- } ) ) ;
192+ for c in children {
193+ let msg = format_message_for_level (
194+ c. level ,
195+ Cow :: Owned ( format_diag_messages ( & c. messages , args) . to_string ( ) ) ,
196+ ) ;
197+ let annotation_level = annotation_level_for_level ( c. level ) ;
198+ let message_level = message_level_for_level ( c. level ) ;
199+
200+ if c. level == Level :: BulletPoint
201+ && !c. span . has_primary_spans ( )
202+ && !c. span . has_span_labels ( )
203+ {
204+ report. push ( std:: mem:: replace (
205+ & mut group,
206+ Group :: with_title ( annotation_level. secondary_title ( msg) ) ,
207+ ) ) ;
208+ } else {
209+ group = group. element ( message_level. message ( msg) ) ;
210+ }
211+ }
182212
183213 report. push ( group) ;
184214 if let Err ( e) = emit_to_destination (
@@ -239,7 +269,8 @@ impl AnnotateSnippetEmitter {
239269 }
240270
241271 for c in children {
242- let level = annotation_level_for_level ( c. level ) ;
272+ let annotation_level = annotation_level_for_level ( c. level ) ;
273+ let message_level = message_level_for_level ( c. level ) ;
243274
244275 // If at least one portion of the message is styled, we need to
245276 // "pre-style" the message
@@ -248,16 +279,24 @@ impl AnnotateSnippetEmitter {
248279 } else {
249280 format_diag_messages ( & c. messages , args)
250281 } ;
282+ let msg = format_message_for_level ( c. level , msg) ;
251283
252284 // This is a secondary message with no span info
253285 if !c. span . has_primary_spans ( ) && !c. span . has_span_labels ( ) {
254- group = group. element ( level. clone ( ) . message ( msg) ) ;
286+ if c. level == Level :: BulletPoint {
287+ report. push ( std:: mem:: replace (
288+ & mut group,
289+ Group :: with_title ( annotation_level. secondary_title ( msg) ) ,
290+ ) ) ;
291+ } else {
292+ group = group. element ( message_level. message ( msg) ) ;
293+ }
255294 continue ;
256295 }
257296
258297 report. push ( std:: mem:: replace (
259298 & mut group,
260- Group :: with_title ( level . clone ( ) . secondary_title ( msg) ) ,
299+ Group :: with_title ( annotation_level . clone ( ) . secondary_title ( msg) ) ,
261300 ) ) ;
262301
263302 let mut file_ann = collect_annotations ( args, & c. span , sm) ;
@@ -286,7 +325,7 @@ impl AnnotateSnippetEmitter {
286325 file_idx,
287326 & mut report,
288327 group,
289- & level ,
328+ & annotation_level ,
290329 ) ;
291330 }
292331 }
0 commit comments