@@ -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,8 @@ 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 ( ) ;
304304 match & section {
305305 Element :: Message ( title) => {
306306 let title_style = TitleStyle :: Secondary ;
@@ -331,6 +331,7 @@ impl Renderer {
331331 & annotated_lines,
332332 max_depth,
333333 peek. is_some ( ) || ( g == 0 && group_len > 1 ) ,
334+ i == 0 ,
334335 ) ;
335336
336337 if g == 0 {
@@ -365,6 +366,7 @@ impl Renderer {
365366 & source_map,
366367 primary_path. or ( og_primary_path) ,
367368 last_was_suggestion,
369+ i == 0 ,
368370 ) ;
369371 last_was_suggestion = true ;
370372 }
@@ -378,6 +380,7 @@ impl Renderer {
378380 max_line_num_len,
379381 origin,
380382 is_primary,
383+ i == 0 ,
381384 buffer_msg_line_offset,
382385 ) ;
383386 last_was_suggestion = false ;
@@ -484,7 +487,7 @@ impl Renderer {
484487 }
485488 }
486489
487- self . render_origin ( & mut buffer, 0 , & origin, true , 0 ) ;
490+ self . render_origin ( & mut buffer, 0 , & origin, true , true , 0 ) ;
488491 buffer. append ( 0 , ": " , ElementStyle :: LineAndColumn ) ;
489492 }
490493 }
@@ -633,12 +636,13 @@ impl Renderer {
633636 max_line_num_len : usize ,
634637 origin : & Origin < ' _ > ,
635638 is_primary : bool ,
639+ is_first : bool ,
636640 buffer_msg_line_offset : usize ,
637641 ) {
638642 if is_primary && !self . short_message {
639643 buffer. prepend (
640644 buffer_msg_line_offset,
641- self . file_start ( ) ,
645+ self . file_start ( is_first ) ,
642646 ElementStyle :: LineNumber ,
643647 ) ;
644648 } else if !self . short_message {
@@ -696,6 +700,7 @@ impl Renderer {
696700 annotated_lines : & [ AnnotatedLineInfo < ' _ > ] ,
697701 multiline_depth : usize ,
698702 is_cont : bool ,
703+ is_first : bool ,
699704 ) {
700705 if let Some ( path) = & snippet. path {
701706 let mut origin = Origin :: path ( path. as_ref ( ) ) ;
@@ -748,6 +753,7 @@ impl Renderer {
748753 max_line_num_len,
749754 & origin,
750755 is_primary,
756+ is_first,
751757 buffer_msg_line_offset,
752758 ) ;
753759 // Put in the spacer between the location and annotated source
@@ -763,7 +769,7 @@ impl Renderer {
763769 buffer. puts (
764770 buffer_msg_line_offset,
765771 max_line_num_len,
766- self . file_start ( ) ,
772+ self . file_start ( is_first ) ,
767773 ElementStyle :: LineNumber ,
768774 ) ;
769775 } else {
@@ -1599,6 +1605,7 @@ impl Renderer {
15991605 . collect :: < Vec < _ > > ( )
16001606 }
16011607
1608+ #[ allow( clippy:: too_many_arguments) ]
16021609 fn emit_suggestion_default (
16031610 & self ,
16041611 buffer : & mut StyledBuffer ,
@@ -1607,6 +1614,7 @@ impl Renderer {
16071614 sm : & SourceMap < ' _ > ,
16081615 primary_path : Option < & Cow < ' _ , str > > ,
16091616 is_cont : bool ,
1617+ is_first : bool ,
16101618 ) {
16111619 let suggestions = sm. splice_lines ( suggestion. markers . clone ( ) ) ;
16121620
@@ -1633,7 +1641,7 @@ impl Renderer {
16331641 let ( loc, _) = sm. span_to_locations ( parts[ 0 ] . span . clone ( ) ) ;
16341642 // --> file.rs:line:col
16351643 // |
1636- let arrow = self . file_start ( ) ;
1644+ let arrow = self . file_start ( is_first ) ;
16371645 buffer. puts ( row_num - 1 , 0 , arrow, ElementStyle :: LineNumber ) ;
16381646 let message = format ! ( "{}:{}:{}" , path, loc. line, loc. char + 1 ) ;
16391647 if is_cont {
@@ -2444,10 +2452,11 @@ impl Renderer {
24442452 )
24452453 }
24462454
2447- fn file_start ( & self ) -> & ' static str {
2455+ fn file_start ( & self , is_first : bool ) -> & ' static str {
24482456 match self . theme {
24492457 OutputTheme :: Ascii => "--> " ,
2450- OutputTheme :: Unicode => " ╭▸ " ,
2458+ OutputTheme :: Unicode if is_first => " ╭▸ " ,
2459+ OutputTheme :: Unicode => " ├▸ " ,
24512460 }
24522461 }
24532462
0 commit comments