File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -546,7 +546,11 @@ fn render_snippet_annotations(
546546 buffer_msg_line_offset,
547547 max_line_num_len + 1 ,
548548 ) ;
549- if let Some ( first_line) = annotated_lines. first ( ) {
549+ if let Some ( first_line) = annotated_lines
550+ . iter ( )
551+ . find ( |l| !l. annotations . is_empty ( ) )
552+ . or ( annotated_lines. first ( ) )
553+ {
550554 origin. line = Some ( first_line. line_index ) ;
551555 if let Some ( first_annotation) = first_line. annotations . first ( ) {
552556 origin. char_column = Some ( first_annotation. start . char + 1 ) ;
Original file line number Diff line number Diff line change @@ -5177,3 +5177,60 @@ help: consider making `bar` public
51775177 let renderer = renderer. decor_style ( DecorStyle :: Unicode ) ;
51785178 assert_data_eq ! ( renderer. render( input) , expected_unicode) ;
51795179}
5180+
5181+ #[ test]
5182+ fn prefer_first_annotation_on_secondary_snippets ( ) {
5183+ let input = & [ Level :: ERROR
5184+ . primary_title ( "main diagnostic message" )
5185+ . id ( "test-diagnostics" )
5186+ . element (
5187+ Snippet :: source ( "aardvark\n beetle\n canary\n " )
5188+ . path ( "animals" )
5189+ . fold ( false )
5190+ . annotation ( AnnotationKind :: Primary . span ( 0 ..8 ) ) ,
5191+ )
5192+ . element (
5193+ Snippet :: source ( "inchworm\n jackrabbit\n kangaroo\n " )
5194+ . path ( "animals" )
5195+ . fold ( false )
5196+ . annotation ( AnnotationKind :: Context . span ( 20 ..28 ) ) ,
5197+ ) ] ;
5198+
5199+ let expected_ascii = str![ [ r#"
5200+ error[test-diagnostics]: main diagnostic message
5201+ --> animals:1:1
5202+ |
5203+ 1 | aardvark
5204+ | ^^^^^^^^
5205+ 2 | beetle
5206+ 3 | canary
5207+ |
5208+ ::: animals:3:1
5209+ |
5210+ 1 | inchworm
5211+ 2 | jackrabbit
5212+ 3 | kangaroo
5213+ | --------
5214+ "# ] ] ;
5215+ let renderer = Renderer :: plain ( ) ;
5216+ assert_data_eq ! ( renderer. render( input) , expected_ascii) ;
5217+
5218+ let expected_unicode = str![ [ r#"
5219+ error[test-diagnostics]: main diagnostic message
5220+ ╭▸ animals:1:1
5221+ │
5222+ 1 │ aardvark
5223+ │ ━━━━━━━━
5224+ 2 │ beetle
5225+ 3 │ canary
5226+ │
5227+ ⸬ animals:3:1
5228+ │
5229+ 1 │ inchworm
5230+ 2 │ jackrabbit
5231+ 3 │ kangaroo
5232+ ╰╴────────
5233+ "# ] ] ;
5234+ let renderer = renderer. decor_style ( DecorStyle :: Unicode ) ;
5235+ assert_data_eq ! ( renderer. render( input) , expected_unicode) ;
5236+ }
You can’t perform that action at this time.
0 commit comments