@@ -263,10 +263,10 @@ impl Renderer {
263
263
source_map_annotated_lines. push_back ( ( source_map, annotated_lines) ) ;
264
264
}
265
265
}
266
- let mut message_iter = group. elements . iter ( ) . peekable ( ) ;
266
+ let mut message_iter = group. elements . iter ( ) . enumerate ( ) . peekable ( ) ;
267
267
let mut last_was_suggestion = false ;
268
268
if let Some ( title) = & group. title {
269
- let peek = message_iter. peek ( ) . copied ( ) ;
269
+ let peek = message_iter. peek ( ) . map ( | ( _ , s ) | s ) . copied ( ) ;
270
270
let title_style = if g == 0 {
271
271
TitleStyle :: MainHeader
272
272
} else {
@@ -299,8 +299,8 @@ impl Renderer {
299
299
}
300
300
}
301
301
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
304
match & section {
305
305
Element :: Message ( title) => {
306
306
let title_style = TitleStyle :: Secondary ;
@@ -331,6 +331,7 @@ impl Renderer {
331
331
& annotated_lines,
332
332
max_depth,
333
333
peek. is_some ( ) || ( g == 0 && group_len > 1 ) ,
334
+ i == 0 ,
334
335
) ;
335
336
336
337
if g == 0 {
@@ -365,6 +366,7 @@ impl Renderer {
365
366
& source_map,
366
367
primary_path. or ( og_primary_path) ,
367
368
last_was_suggestion,
369
+ i == 0 ,
368
370
) ;
369
371
last_was_suggestion = true ;
370
372
}
@@ -378,6 +380,7 @@ impl Renderer {
378
380
max_line_num_len,
379
381
origin,
380
382
is_primary,
383
+ i == 0 ,
381
384
buffer_msg_line_offset,
382
385
) ;
383
386
last_was_suggestion = false ;
@@ -484,7 +487,7 @@ impl Renderer {
484
487
}
485
488
}
486
489
487
- self . render_origin ( & mut buffer, 0 , & origin, true , 0 ) ;
490
+ self . render_origin ( & mut buffer, 0 , & origin, true , true , 0 ) ;
488
491
buffer. append ( 0 , ": " , ElementStyle :: LineAndColumn ) ;
489
492
}
490
493
}
@@ -633,12 +636,13 @@ impl Renderer {
633
636
max_line_num_len : usize ,
634
637
origin : & Origin < ' _ > ,
635
638
is_primary : bool ,
639
+ is_first : bool ,
636
640
buffer_msg_line_offset : usize ,
637
641
) {
638
642
if is_primary && !self . short_message {
639
643
buffer. prepend (
640
644
buffer_msg_line_offset,
641
- self . file_start ( ) ,
645
+ self . file_start ( is_first ) ,
642
646
ElementStyle :: LineNumber ,
643
647
) ;
644
648
} else if !self . short_message {
@@ -696,6 +700,7 @@ impl Renderer {
696
700
annotated_lines : & [ AnnotatedLineInfo < ' _ > ] ,
697
701
multiline_depth : usize ,
698
702
is_cont : bool ,
703
+ is_first : bool ,
699
704
) {
700
705
if let Some ( path) = & snippet. path {
701
706
let mut origin = Origin :: path ( path. as_ref ( ) ) ;
@@ -748,6 +753,7 @@ impl Renderer {
748
753
max_line_num_len,
749
754
& origin,
750
755
is_primary,
756
+ is_first,
751
757
buffer_msg_line_offset,
752
758
) ;
753
759
// Put in the spacer between the location and annotated source
@@ -763,7 +769,7 @@ impl Renderer {
763
769
buffer. puts (
764
770
buffer_msg_line_offset,
765
771
max_line_num_len,
766
- self . file_start ( ) ,
772
+ self . file_start ( is_first ) ,
767
773
ElementStyle :: LineNumber ,
768
774
) ;
769
775
} else {
@@ -1599,6 +1605,7 @@ impl Renderer {
1599
1605
. collect :: < Vec < _ > > ( )
1600
1606
}
1601
1607
1608
+ #[ allow( clippy:: too_many_arguments) ]
1602
1609
fn emit_suggestion_default (
1603
1610
& self ,
1604
1611
buffer : & mut StyledBuffer ,
@@ -1607,6 +1614,7 @@ impl Renderer {
1607
1614
sm : & SourceMap < ' _ > ,
1608
1615
primary_path : Option < & Cow < ' _ , str > > ,
1609
1616
is_cont : bool ,
1617
+ is_first : bool ,
1610
1618
) {
1611
1619
let suggestions = sm. splice_lines ( suggestion. markers . clone ( ) ) ;
1612
1620
@@ -1633,7 +1641,7 @@ impl Renderer {
1633
1641
let ( loc, _) = sm. span_to_locations ( parts[ 0 ] . span . clone ( ) ) ;
1634
1642
// --> file.rs:line:col
1635
1643
// |
1636
- let arrow = self . file_start ( ) ;
1644
+ let arrow = self . file_start ( is_first ) ;
1637
1645
buffer. puts ( row_num - 1 , 0 , arrow, ElementStyle :: LineNumber ) ;
1638
1646
let message = format ! ( "{}:{}:{}" , path, loc. line, loc. char + 1 ) ;
1639
1647
if is_cont {
@@ -2444,10 +2452,11 @@ impl Renderer {
2444
2452
)
2445
2453
}
2446
2454
2447
- fn file_start ( & self ) -> & ' static str {
2455
+ fn file_start ( & self , is_first : bool ) -> & ' static str {
2448
2456
match self . theme {
2449
2457
OutputTheme :: Ascii => "--> " ,
2450
- OutputTheme :: Unicode => " ╭▸ " ,
2458
+ OutputTheme :: Unicode if is_first => " ╭▸ " ,
2459
+ OutputTheme :: Unicode => " ├▸ " ,
2451
2460
}
2452
2461
}
2453
2462
0 commit comments