@@ -263,10 +263,10 @@ impl Renderer {
263263 source_map_annotated_lines. push_back ( ( source_map, annotated_lines) ) ;
264264 }
265265 }
266- let mut message_iter = group. elements . iter ( ) . peekable ( ) ;
266+ let mut message_iter = group. elements . iter ( ) . enumerate ( ) . peekable ( ) ;
267267 let mut last_was_suggestion = false ;
268268 if let Some ( title) = & group. title {
269- let peek = message_iter. peek ( ) . copied ( ) ;
269+ let peek = message_iter. peek ( ) . map ( | ( _ , s ) | s ) . copied ( ) ;
270270 let title_style = if g == 0 {
271271 TitleStyle :: MainHeader
272272 } else {
@@ -299,8 +299,9 @@ impl Renderer {
299299 }
300300 }
301301 let mut seen_primary = false ;
302- while let Some ( section) = message_iter. next ( ) {
303- let peek = message_iter. peek ( ) . copied ( ) ;
302+ while let Some ( ( i, section) ) = message_iter. next ( ) {
303+ let peek = message_iter. peek ( ) . map ( |( _, s) | s) . copied ( ) ;
304+ let is_first = i == 0 ;
304305 match & section {
305306 Element :: Message ( title) => {
306307 let title_style = TitleStyle :: Secondary ;
@@ -331,6 +332,7 @@ impl Renderer {
331332 & annotated_lines,
332333 max_depth,
333334 peek. is_some ( ) || ( g == 0 && group_len > 1 ) ,
335+ is_first,
334336 ) ;
335337
336338 if g == 0 {
@@ -365,6 +367,7 @@ impl Renderer {
365367 & source_map,
366368 primary_path. or ( og_primary_path) ,
367369 last_was_suggestion,
370+ is_first,
368371 ) ;
369372 last_was_suggestion = true ;
370373 }
@@ -378,6 +381,7 @@ impl Renderer {
378381 max_line_num_len,
379382 origin,
380383 is_primary,
384+ is_first,
381385 buffer_msg_line_offset,
382386 ) ;
383387 last_was_suggestion = false ;
@@ -484,7 +488,7 @@ impl Renderer {
484488 }
485489 }
486490
487- self . render_origin ( & mut buffer, 0 , & origin, true , 0 ) ;
491+ self . render_origin ( & mut buffer, 0 , & origin, true , true , 0 ) ;
488492 buffer. append ( 0 , ": " , ElementStyle :: LineAndColumn ) ;
489493 }
490494 }
@@ -633,12 +637,13 @@ impl Renderer {
633637 max_line_num_len : usize ,
634638 origin : & Origin < ' _ > ,
635639 is_primary : bool ,
640+ is_first : bool ,
636641 buffer_msg_line_offset : usize ,
637642 ) {
638643 if is_primary && !self . short_message {
639644 buffer. prepend (
640645 buffer_msg_line_offset,
641- self . file_start ( ) ,
646+ self . file_start ( is_first ) ,
642647 ElementStyle :: LineNumber ,
643648 ) ;
644649 } else if !self . short_message {
@@ -696,6 +701,7 @@ impl Renderer {
696701 annotated_lines : & [ AnnotatedLineInfo < ' _ > ] ,
697702 multiline_depth : usize ,
698703 is_cont : bool ,
704+ is_first : bool ,
699705 ) {
700706 if let Some ( path) = & snippet. path {
701707 let mut origin = Origin :: path ( path. as_ref ( ) ) ;
@@ -748,6 +754,7 @@ impl Renderer {
748754 max_line_num_len,
749755 & origin,
750756 is_primary,
757+ is_first,
751758 buffer_msg_line_offset,
752759 ) ;
753760 // Put in the spacer between the location and annotated source
@@ -763,7 +770,7 @@ impl Renderer {
763770 buffer. puts (
764771 buffer_msg_line_offset,
765772 max_line_num_len,
766- self . file_start ( ) ,
773+ self . file_start ( is_first ) ,
767774 ElementStyle :: LineNumber ,
768775 ) ;
769776 } else {
@@ -1599,6 +1606,7 @@ impl Renderer {
15991606 . collect :: < Vec < _ > > ( )
16001607 }
16011608
1609+ #[ allow( clippy:: too_many_arguments) ]
16021610 fn emit_suggestion_default (
16031611 & self ,
16041612 buffer : & mut StyledBuffer ,
@@ -1607,6 +1615,7 @@ impl Renderer {
16071615 sm : & SourceMap < ' _ > ,
16081616 primary_path : Option < & Cow < ' _ , str > > ,
16091617 is_cont : bool ,
1618+ is_first : bool ,
16101619 ) {
16111620 let suggestions = sm. splice_lines ( suggestion. markers . clone ( ) ) ;
16121621
@@ -1633,7 +1642,7 @@ impl Renderer {
16331642 let ( loc, _) = sm. span_to_locations ( parts[ 0 ] . span . clone ( ) ) ;
16341643 // --> file.rs:line:col
16351644 // |
1636- let arrow = self . file_start ( ) ;
1645+ let arrow = self . file_start ( is_first ) ;
16371646 buffer. puts ( row_num - 1 , 0 , arrow, ElementStyle :: LineNumber ) ;
16381647 let message = format ! ( "{}:{}:{}" , path, loc. line, loc. char + 1 ) ;
16391648 if is_cont {
@@ -2444,10 +2453,11 @@ impl Renderer {
24442453 )
24452454 }
24462455
2447- fn file_start ( & self ) -> & ' static str {
2456+ fn file_start ( & self , is_first : bool ) -> & ' static str {
24482457 match self . theme {
24492458 OutputTheme :: Ascii => "--> " ,
2450- OutputTheme :: Unicode => " ╭▸ " ,
2459+ OutputTheme :: Unicode if is_first => " ╭▸ " ,
2460+ OutputTheme :: Unicode => " ├▸ " ,
24512461 }
24522462 }
24532463
0 commit comments