@@ -5646,3 +5646,34 @@ LL │ static ROOK_ATTACKS_TABLE: () = {
56465646 let renderer = renderer. decor_style ( DecorStyle :: Unicode ) ;
56475647 assert_data_eq ! ( renderer. render( input) , expected_unicode) ;
56485648}
5649+
5650+ #[ test]
5651+ #[ should_panic = "attempt to subtract with overflow" ]
5652+ fn emitter_overflow_bad_whitespace ( ) {
5653+ // tests/ui/errors/emitter-overflow-bad-whitespace.rs
5654+ let source = r#" fn main() { return; }
5655+ "# ;
5656+ let title_0 = "Unicode character ' ' (No-Break Space) looks like ' ' (Space), but it is not" ;
5657+
5658+ let report = & [
5659+ Group :: with_title ( Level :: ERROR . primary_title ( "unknown start of token: \u{a0} " ) ) . element (
5660+ Snippet :: source ( source)
5661+ . path ( "$DIR/emitter-overflow-bad-whitespace.rs" )
5662+ . line_start ( 10 )
5663+ . annotation ( AnnotationKind :: Primary . span ( 0 ..2 ) ) ,
5664+ ) ,
5665+ Group :: with_title ( Level :: HELP . secondary_title ( title_0) ) . element (
5666+ Snippet :: source ( source)
5667+ . path ( "$DIR/emitter-overflow-bad-whitespace.rs" )
5668+ . line_start ( 10 )
5669+ . patch ( Patch :: new ( 0 ..2 , " " ) ) ,
5670+ ) ,
5671+ ] ;
5672+ let expected_ascii = str![ [ r#""# ] ] ;
5673+ let renderer_ascii = Renderer :: plain ( ) . term_width ( 1 ) ;
5674+ assert_data_eq ! ( renderer_ascii. render( report) , expected_ascii) ;
5675+
5676+ let expected_unicode = str![ [ r#""# ] ] ;
5677+ let renderer_unicode = renderer_ascii. decor_style ( DecorStyle :: Unicode ) ;
5678+ assert_data_eq ! ( renderer_unicode. render( report) , expected_unicode) ;
5679+ }
0 commit comments