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