@@ -2129,7 +2129,7 @@ fn unicode_cut_handling() {
2129
2129
. annotation ( AnnotationKind :: Primary . span ( 85 ..228 ) . label ( "annotation" ) ) ,
2130
2130
) ,
2131
2131
) ;
2132
- let expected = str![ [ r#"
2132
+ let expected_ascii = str![ [ r#"
2133
2133
error: title
2134
2134
|
2135
2135
1 | version = "0.1.0"
@@ -2140,8 +2140,22 @@ error: title
2140
2140
5 | | ]
2141
2141
| |_^ annotation
2142
2142
"# ] ] ;
2143
- let renderer = Renderer :: plain ( ) ;
2144
- assert_data_eq ! ( renderer. render( input) , expected) ;
2143
+ let renderer_ascii = Renderer :: plain ( ) ;
2144
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2145
+
2146
+ let expected_unicode = str![ [ r#"
2147
+ error: title
2148
+ │
2149
+ 1 │ version = "0.1.0"
2150
+ 2 │ # Ensure that the spans from toml handle utf-8 correctly
2151
+ 3 │ authors = [
2152
+ │ ┏━━━━━━━━━━━┛
2153
+ 4 │ ┃ { name = "Z͑ͫ̓ͪ̂ͫ̽͏̴̙̤̞͉͚̯̞̠͍A̴̵̜̰͔ͫ͗͢L̠ͨͧͩ͘G̴̻͈͍͔̹̑͗̎̅͛́Ǫ̵̹̻̝̳͂̌̌͘", email = 1 }
2154
+ 5 │ ┃ ]
2155
+ ╰╴┗━┛ annotation
2156
+ "# ] ] ;
2157
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2158
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2145
2159
}
2146
2160
2147
2161
#[ test]
@@ -2159,16 +2173,26 @@ fn unicode_cut_handling2() {
2159
2173
)
2160
2174
) ;
2161
2175
2162
- let expected = str![ [ r#"
2176
+ let expected_ascii = str![ [ r#"
2163
2177
error: expected item, found `?`
2164
2178
|
2165
2179
1 | ...的。这是宽的。这是宽的。这是宽的。这是宽的。这是宽的。*/?
2166
2180
| ^ expected item
2167
2181
= note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2168
2182
"# ] ] ;
2169
2183
2170
- let renderer = Renderer :: plain ( ) ;
2171
- assert_data_eq ! ( renderer. render( input) , expected) ;
2184
+ let renderer_ascii = Renderer :: plain ( ) ;
2185
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2186
+
2187
+ let expected_unicode = str![ [ r#"
2188
+ error: expected item, found `?`
2189
+ │
2190
+ 1 │ …宽的。这是宽的。这是宽的。这是宽的。这是宽的。这是宽的。*/?
2191
+ │ ━ expected item
2192
+ ╰ note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2193
+ "# ] ] ;
2194
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2195
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2172
2196
}
2173
2197
2174
2198
#[ test]
@@ -2186,16 +2210,26 @@ fn unicode_cut_handling3() {
2186
2210
)
2187
2211
) ;
2188
2212
2189
- let expected = str![ [ r#"
2213
+ let expected_ascii = str![ [ r#"
2190
2214
error: expected item, found `?`
2191
2215
|
2192
2216
1 | ...。这是宽的。这是宽的。这是宽的...
2193
2217
| ^^ expected item
2194
2218
= note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2195
2219
"# ] ] ;
2196
2220
2197
- let renderer = Renderer :: plain ( ) . term_width ( 43 ) ;
2198
- assert_data_eq ! ( renderer. render( input) , expected) ;
2221
+ let renderer_ascii = Renderer :: plain ( ) . term_width ( 43 ) ;
2222
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2223
+
2224
+ let expected_unicode = str![ [ r#"
2225
+ error: expected item, found `?`
2226
+ │
2227
+ 1 │ …的。这是宽的。这是宽的。这是宽的。…
2228
+ │ ━━ expected item
2229
+ ╰ note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2230
+ "# ] ] ;
2231
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2232
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2199
2233
}
2200
2234
2201
2235
#[ test]
@@ -2213,16 +2247,26 @@ fn unicode_cut_handling4() {
2213
2247
)
2214
2248
) ;
2215
2249
2216
- let expected = str![ [ r#"
2250
+ let expected_ascii = str![ [ r#"
2217
2251
error: expected item, found `?`
2218
2252
|
2219
2253
1 | ...aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*/?
2220
2254
| ^ expected item
2221
2255
= note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2222
2256
"# ] ] ;
2223
2257
2224
- let renderer = Renderer :: plain ( ) ;
2225
- assert_data_eq ! ( renderer. render( input) , expected) ;
2258
+ let renderer_ascii = Renderer :: plain ( ) ;
2259
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2260
+
2261
+ let expected_unicode = str![ [ r#"
2262
+ error: expected item, found `?`
2263
+ │
2264
+ 1 │ …aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa*/?
2265
+ │ ━ expected item
2266
+ ╰ note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
2267
+ "# ] ] ;
2268
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2269
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2226
2270
}
2227
2271
2228
2272
#[ test]
@@ -2252,7 +2296,7 @@ fn main() {
2252
2296
) ,
2253
2297
) ;
2254
2298
2255
- let expected = str![ [ r#"
2299
+ let expected_ascii = str![ [ r#"
2256
2300
error[E0308]: mismatched types
2257
2301
--> $DIR/non-whitespace-trimming-unicode.rs:4:415
2258
2302
|
@@ -2262,8 +2306,20 @@ LL | ...♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾
2262
2306
| expected due to this
2263
2307
"# ] ] ;
2264
2308
2265
- let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2266
- assert_data_eq ! ( renderer. render( input) , expected) ;
2309
+ let renderer_ascii = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2310
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2311
+
2312
+ let expected_unicode = str![ [ r#"
2313
+ error[E0308]: mismatched types
2314
+ ╭▸ $DIR/non-whitespace-trimming-unicode.rs:4:415
2315
+ │
2316
+ LL │ …♥♦♧♨♩♪♫♬♭♮♯♰♱♲♳♴♵♶♷♸♹♺♻♼♽♾♿⚀⚁⚂⚃⚄⚅⚆⚈⚉4"; let _: () = 42; let _: &str = "🦀☀☁☂☃☄★☆☇☈☉☊☋☌☍☎☏☐☑☒☓ ☖☗☘☙☚☛☜☝☞☟☠☡☢☣☤☥☦☧☨☩☪☫☬☭☮☯☰☱☲☳☴☵☶☷☸☹…
2317
+ │ ┬─ ━━ expected `()`, found integer
2318
+ │ │
2319
+ ╰╴ expected due to this
2320
+ "# ] ] ;
2321
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2322
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2267
2323
}
2268
2324
2269
2325
#[ test]
@@ -2311,7 +2367,27 @@ fn main() {
2311
2367
) ,
2312
2368
) ;
2313
2369
2314
- let expected = str![ [ r#"
2370
+ let expected_ascii = str![ [ r#"
2371
+ error[E0369]: cannot add `&str` to `&str`
2372
+ --> $DIR/non-1-width-unicode-multiline-label.rs:7:260
2373
+ |
2374
+ LL | ...࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔࿕࿖࿗࿘࿙࿚"; let _a = unicode_is_fun + " really fun!";
2375
+ | -------------- ^ -------------- &str
2376
+ | | |
2377
+ | | `+` cannot be used to concatenate two `&str` strings
2378
+ | &str
2379
+ |
2380
+ = note: string concatenation requires an owned `String` on the left
2381
+ help: create an owned `String` from a string reference
2382
+ |
2383
+ LL | let _ = "ༀ༁༂༃༄༅༆༇༈༉༊་༌།༎༏༐༑༒༓༔༕༖༗༘༙༚༛༜༝༞༟༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳༴༵༶༷༸༹༺༻༼༽༾༿ཀཁགགྷངཅཆཇཉཊཋཌཌྷཎཏཐདདྷནཔཕབབྷམཙཚཛཛྷཝཞཟའཡརལཤཥསཧཨཀྵཪཫཬཱཱཱིིུུྲྀཷླྀཹེཻོཽཾཿ྄ཱྀྀྂྃ྅྆྇ྈྉྊྋྌྍྎྏྐྑྒྒྷྔྕྖྗྙྚྛྜྜྷྞྟྠྡྡྷྣྤྥྦྦྷྨྩྪྫྫྷྭྮྯྰྱྲླྴྵྶྷྸྐྵྺྻྼ྾྿࿀࿁࿂࿃࿄࿅࿆࿇࿈࿉࿊࿋࿌࿎࿏࿐࿑࿒࿓࿔࿕࿖࿗࿘࿙࿚"; let _a = unicode_is_fun.to_owned() + " really fun!";
2384
+ | +++++++++++
2385
+ "# ] ] ;
2386
+
2387
+ let renderer_ascii = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2388
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2389
+
2390
+ let expected_unicode = str![ [ r#"
2315
2391
error[E0369]: cannot add `&str` to `&str`
2316
2392
╭▸ $DIR/non-1-width-unicode-multiline-label.rs:7:260
2317
2393
│
@@ -2328,10 +2404,8 @@ LL │ let _ = "ༀ༁༂༃༄༅༆༇༈༉༊་༌།༎༏༐༑༒༓
2328
2404
╰╴ +++++++++++
2329
2405
"# ] ] ;
2330
2406
2331
- let renderer = Renderer :: plain ( )
2332
- . anonymized_line_numbers ( true )
2333
- . theme ( OutputTheme :: Unicode ) ;
2334
- assert_data_eq ! ( renderer. render( input) , expected) ;
2407
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2408
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2335
2409
}
2336
2410
2337
2411
#[ test]
@@ -2367,7 +2441,7 @@ fn foo() {
2367
2441
. element ( Level :: NOTE . title ( "this error originates in the macro `include` (in Nightly builds, run with -Z macro-backtrace for more info)" ) ) ,
2368
2442
) ;
2369
2443
2370
- let expected = str![ [ r#"
2444
+ let expected_ascii = str![ [ r#"
2371
2445
error: couldn't read `$DIR/not-utf8.bin`: stream did not contain valid UTF-8
2372
2446
--> $DIR/not-utf8.rs:6:5
2373
2447
|
@@ -2382,6 +2456,23 @@ LL | �|�␂!5�cc␕␂�Ӻi��WWj�ȥ�'�}�␒�J�ȉ��W
2382
2456
= note: this error originates in the macro `include` (in Nightly builds, run with -Z macro-backtrace for more info)
2383
2457
"# ] ] ;
2384
2458
2385
- let renderer = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2386
- assert_data_eq ! ( renderer. render( input) , expected) ;
2459
+ let renderer_ascii = Renderer :: plain ( ) . anonymized_line_numbers ( true ) ;
2460
+ assert_data_eq ! ( renderer_ascii. render( input. clone( ) ) , expected_ascii) ;
2461
+
2462
+ let expected_unicode = str![ [ r#"
2463
+ error: couldn't read `$DIR/not-utf8.bin`: stream did not contain valid UTF-8
2464
+ ╭▸ $DIR/not-utf8.rs:6:5
2465
+ │
2466
+ LL │ include!("not-utf8.bin");
2467
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━
2468
+ ╰╴
2469
+ note: byte `193` is not valid utf-8
2470
+ ╭▸ $DIR/not-utf8.bin:1:1
2471
+ │
2472
+ LL │ �|�␂!5�cc␕␂�Ӻi��WWj�ȥ�'�}�␒�J�ȉ��W�␞O�@����␜w�V���LO����␔[ ␃_�'���SQ�~ذ��ų&��- ��lN~��!@␌ _#���kQ��h�␝�:�␜␇�
2473
+ │ ━
2474
+ ╰ note: this error originates in the macro `include` (in Nightly builds, run with -Z macro-backtrace for more info)
2475
+ "# ] ] ;
2476
+ let renderer_unicode = renderer_ascii. theme ( OutputTheme :: Unicode ) ;
2477
+ assert_data_eq ! ( renderer_unicode. render( input) , expected_unicode) ;
2387
2478
}
0 commit comments