aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/tests/traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_ty/src/tests/traits.rs')
-rw-r--r--crates/ra_hir_ty/src/tests/traits.rs1106
1 files changed, 553 insertions, 553 deletions
diff --git a/crates/ra_hir_ty/src/tests/traits.rs b/crates/ra_hir_ty/src/tests/traits.rs
index a46f03b7f..f51cdd496 100644
--- a/crates/ra_hir_ty/src/tests/traits.rs
+++ b/crates/ra_hir_ty/src/tests/traits.rs
@@ -256,16 +256,16 @@ fn test() {
256} 256}
257"#), 257"#),
258 @r###" 258 @r###"
259 [86; 87) 't': T 259 86..87 't': T
260 [92; 94) '{}': () 260 92..94 '{}': ()
261 [105; 144) '{ ...(s); }': () 261 105..144 '{ ...(s); }': ()
262 [115; 116) 's': S<u32> 262 115..116 's': S<u32>
263 [119; 120) 'S': S<u32>(u32) -> S<u32> 263 119..120 'S': S<u32>(u32) -> S<u32>
264 [119; 129) 'S(unknown)': S<u32> 264 119..129 'S(unknown)': S<u32>
265 [121; 128) 'unknown': u32 265 121..128 'unknown': u32
266 [135; 138) 'foo': fn foo<S<u32>>(S<u32>) 266 135..138 'foo': fn foo<S<u32>>(S<u32>)
267 [135; 141) 'foo(s)': () 267 135..141 'foo(s)': ()
268 [139; 140) 's': S<u32> 268 139..140 's': S<u32>
269 "### 269 "###
270 ); 270 );
271} 271}
@@ -284,17 +284,17 @@ fn test() {
284} 284}
285"#), 285"#),
286 @r###" 286 @r###"
287 [87; 88) 't': T 287 87..88 't': T
288 [98; 100) '{}': () 288 98..100 '{}': ()
289 [111; 163) '{ ...(s); }': () 289 111..163 '{ ...(s); }': ()
290 [121; 122) 's': S<u32> 290 121..122 's': S<u32>
291 [125; 126) 'S': S<u32>(u32) -> S<u32> 291 125..126 'S': S<u32>(u32) -> S<u32>
292 [125; 135) 'S(unknown)': S<u32> 292 125..135 'S(unknown)': S<u32>
293 [127; 134) 'unknown': u32 293 127..134 'unknown': u32
294 [145; 146) 'x': u32 294 145..146 'x': u32
295 [154; 157) 'foo': fn foo<u32, S<u32>>(S<u32>) -> u32 295 154..157 'foo': fn foo<u32, S<u32>>(S<u32>) -> u32
296 [154; 160) 'foo(s)': u32 296 154..160 'foo(s)': u32
297 [158; 159) 's': S<u32> 297 158..159 's': S<u32>
298 "### 298 "###
299 ); 299 );
300} 300}
@@ -312,12 +312,12 @@ trait Trait {
312} 312}
313"#), 313"#),
314 @r###" 314 @r###"
315 [27; 31) 'self': &Self 315 27..31 'self': &Self
316 [53; 57) 'self': &Self 316 53..57 'self': &Self
317 [62; 97) '{ ... }': () 317 62..97 '{ ... }': ()
318 [76; 77) 'x': i64 318 76..77 'x': i64
319 [80; 84) 'self': &Self 319 80..84 'self': &Self
320 [80; 90) 'self.foo()': i64 320 80..90 'self.foo()': i64
321 "### 321 "###
322 ); 322 );
323} 323}
@@ -337,12 +337,12 @@ trait Trait: SuperTrait {
337} 337}
338"#), 338"#),
339 @r###" 339 @r###"
340 [32; 36) 'self': &Self 340 32..36 'self': &Self
341 [86; 90) 'self': &Self 341 86..90 'self': &Self
342 [95; 130) '{ ... }': () 342 95..130 '{ ... }': ()
343 [109; 110) 'x': i64 343 109..110 'x': i64
344 [113; 117) 'self': &Self 344 113..117 'self': &Self
345 [113; 123) 'self.foo()': i64 345 113..123 'self.foo()': i64
346 "### 346 "###
347 ); 347 );
348} 348}
@@ -364,15 +364,15 @@ fn test<T: Iterable>() {
364} 364}
365"#), 365"#),
366 @r###" 366 @r###"
367 [108; 261) '{ ...ter; }': () 367 108..261 '{ ...ter; }': ()
368 [118; 119) 'x': u32 368 118..119 'x': u32
369 [145; 146) '1': u32 369 145..146 '1': u32
370 [156; 157) 'y': Iterable::Item<T> 370 156..157 'y': Iterable::Item<T>
371 [183; 192) 'no_matter': Iterable::Item<T> 371 183..192 'no_matter': Iterable::Item<T>
372 [202; 203) 'z': Iterable::Item<T> 372 202..203 'z': Iterable::Item<T>
373 [215; 224) 'no_matter': Iterable::Item<T> 373 215..224 'no_matter': Iterable::Item<T>
374 [234; 235) 'a': Iterable::Item<T> 374 234..235 'a': Iterable::Item<T>
375 [249; 258) 'no_matter': Iterable::Item<T> 375 249..258 'no_matter': Iterable::Item<T>
376 "### 376 "###
377 ); 377 );
378} 378}
@@ -396,25 +396,25 @@ fn test() {
396} 396}
397"#), 397"#),
398 @r###" 398 @r###"
399 [106; 107) 't': T 399 106..107 't': T
400 [123; 125) '{}': () 400 123..125 '{}': ()
401 [147; 148) 't': T 401 147..148 't': T
402 [178; 180) '{}': () 402 178..180 '{}': ()
403 [202; 203) 't': T 403 202..203 't': T
404 [221; 223) '{}': () 404 221..223 '{}': ()
405 [234; 300) '{ ...(S); }': () 405 234..300 '{ ...(S); }': ()
406 [244; 245) 'x': u32 406 244..245 'x': u32
407 [248; 252) 'foo1': fn foo1<S>(S) -> <S as Iterable>::Item 407 248..252 'foo1': fn foo1<S>(S) -> <S as Iterable>::Item
408 [248; 255) 'foo1(S)': u32 408 248..255 'foo1(S)': u32
409 [253; 254) 'S': S 409 253..254 'S': S
410 [265; 266) 'y': u32 410 265..266 'y': u32
411 [269; 273) 'foo2': fn foo2<S>(S) -> <S as Iterable>::Item 411 269..273 'foo2': fn foo2<S>(S) -> <S as Iterable>::Item
412 [269; 276) 'foo2(S)': u32 412 269..276 'foo2(S)': u32
413 [274; 275) 'S': S 413 274..275 'S': S
414 [286; 287) 'z': u32 414 286..287 'z': u32
415 [290; 294) 'foo3': fn foo3<S>(S) -> <S as Iterable>::Item 415 290..294 'foo3': fn foo3<S>(S) -> <S as Iterable>::Item
416 [290; 297) 'foo3(S)': u32 416 290..297 'foo3(S)': u32
417 [295; 296) 'S': S 417 295..296 'S': S
418 "### 418 "###
419 ); 419 );
420} 420}
@@ -431,9 +431,9 @@ fn test<T: Iterable<Item=u32>>() {
431} 431}
432"#), 432"#),
433 @r###" 433 @r###"
434 [67; 100) '{ ...own; }': () 434 67..100 '{ ...own; }': ()
435 [77; 78) 'y': u32 435 77..78 'y': u32
436 [90; 97) 'unknown': u32 436 90..97 'unknown': u32
437 "### 437 "###
438 ); 438 );
439} 439}
@@ -446,13 +446,13 @@ const A: u32 = 1 + 1;
446static B: u64 = { let x = 1; x }; 446static B: u64 = { let x = 1; x };
447"#), 447"#),
448 @r###" 448 @r###"
449 [16; 17) '1': u32 449 16..17 '1': u32
450 [16; 21) '1 + 1': u32 450 16..21 '1 + 1': u32
451 [20; 21) '1': u32 451 20..21 '1': u32
452 [39; 55) '{ let ...1; x }': u64 452 39..55 '{ let ...1; x }': u64
453 [45; 46) 'x': u64 453 45..46 'x': u64
454 [49; 50) '1': u64 454 49..50 '1': u64
455 [52; 53) 'x': u64 455 52..53 'x': u64
456 "### 456 "###
457 ); 457 );
458} 458}
@@ -469,17 +469,17 @@ fn test() -> u64 {
469} 469}
470"#), 470"#),
471 @r###" 471 @r###"
472 [38; 87) '{ ... a.1 }': u64 472 38..87 '{ ... a.1 }': u64
473 [48; 49) 'a': S 473 48..49 'a': S
474 [52; 53) 'S': S(i32, u64) -> S 474 52..53 'S': S(i32, u64) -> S
475 [52; 59) 'S(4, 6)': S 475 52..59 'S(4, 6)': S
476 [54; 55) '4': i32 476 54..55 '4': i32
477 [57; 58) '6': u64 477 57..58 '6': u64
478 [69; 70) 'b': i32 478 69..70 'b': i32
479 [73; 74) 'a': S 479 73..74 'a': S
480 [73; 76) 'a.0': i32 480 73..76 'a.0': i32
481 [82; 83) 'a': S 481 82..83 'a': S
482 [82; 85) 'a.1': u64 482 82..85 'a.1': u64
483 "### 483 "###
484 ); 484 );
485} 485}
@@ -496,24 +496,24 @@ fn test() -> u64 {
496} 496}
497"#), 497"#),
498 @r###" 498 @r###"
499 [44; 102) '{ ...0(2) }': u64 499 44..102 '{ ...0(2) }': u64
500 [54; 55) 'a': S 500 54..55 'a': S
501 [58; 59) 'S': S(fn(u32) -> u64) -> S 501 58..59 'S': S(fn(u32) -> u64) -> S
502 [58; 68) 'S(|i| 2*i)': S 502 58..68 'S(|i| 2*i)': S
503 [60; 67) '|i| 2*i': |u32| -> u64 503 60..67 '|i| 2*i': |u32| -> u64
504 [61; 62) 'i': u32 504 61..62 'i': u32
505 [64; 65) '2': u32 505 64..65 '2': u32
506 [64; 67) '2*i': u32 506 64..67 '2*i': u32
507 [66; 67) 'i': u32 507 66..67 'i': u32
508 [78; 79) 'b': u64 508 78..79 'b': u64
509 [82; 83) 'a': S 509 82..83 'a': S
510 [82; 85) 'a.0': fn(u32) -> u64 510 82..85 'a.0': fn(u32) -> u64
511 [82; 88) 'a.0(4)': u64 511 82..88 'a.0(4)': u64
512 [86; 87) '4': u32 512 86..87 '4': u32
513 [94; 95) 'a': S 513 94..95 'a': S
514 [94; 97) 'a.0': fn(u32) -> u64 514 94..97 'a.0': fn(u32) -> u64
515 [94; 100) 'a.0(2)': u64 515 94..100 'a.0(2)': u64
516 [98; 99) '2': u32 516 98..99 '2': u32
517 "### 517 "###
518 ); 518 );
519} 519}
@@ -523,12 +523,12 @@ fn indexing_arrays() {
523 assert_snapshot!( 523 assert_snapshot!(
524 infer("fn main() { &mut [9][2]; }"), 524 infer("fn main() { &mut [9][2]; }"),
525 @r###" 525 @r###"
526 [10; 26) '{ &mut...[2]; }': () 526 10..26 '{ &mut...[2]; }': ()
527 [12; 23) '&mut [9][2]': &mut {unknown} 527 12..23 '&mut [9][2]': &mut {unknown}
528 [17; 20) '[9]': [i32; _] 528 17..20 '[9]': [i32; _]
529 [17; 23) '[9][2]': {unknown} 529 17..23 '[9][2]': {unknown}
530 [18; 19) '9': i32 530 18..19 '9': i32
531 [21; 22) '2': i32 531 21..22 '2': i32
532 "### 532 "###
533 ) 533 )
534} 534}
@@ -944,34 +944,34 @@ fn test(x: impl Trait<u64>, y: &impl Trait<u32>) {
944} 944}
945"#, true), 945"#, true),
946 @r###" 946 @r###"
947 [30; 34) 'self': &Self 947 30..34 'self': &Self
948 [55; 59) 'self': &Self 948 55..59 'self': &Self
949 [78; 79) 'x': impl Trait<u16> 949 78..79 'x': impl Trait<u16>
950 [98; 100) '{}': () 950 98..100 '{}': ()
951 [155; 156) 'x': impl Trait<u64> 951 155..156 'x': impl Trait<u64>
952 [175; 176) 'y': &impl Trait<u32> 952 175..176 'y': &impl Trait<u32>
953 [196; 324) '{ ...2(); }': () 953 196..324 '{ ...2(); }': ()
954 [202; 203) 'x': impl Trait<u64> 954 202..203 'x': impl Trait<u64>
955 [209; 210) 'y': &impl Trait<u32> 955 209..210 'y': &impl Trait<u32>
956 [220; 221) 'z': S<u16> 956 220..221 'z': S<u16>
957 [224; 225) 'S': S<u16>(u16) -> S<u16> 957 224..225 'S': S<u16>(u16) -> S<u16>
958 [224; 228) 'S(1)': S<u16> 958 224..228 'S(1)': S<u16>
959 [226; 227) '1': u16 959 226..227 '1': u16
960 [234; 237) 'bar': fn bar(S<u16>) 960 234..237 'bar': fn bar(S<u16>)
961 [234; 240) 'bar(z)': () 961 234..240 'bar(z)': ()
962 [238; 239) 'z': S<u16> 962 238..239 'z': S<u16>
963 [246; 247) 'x': impl Trait<u64> 963 246..247 'x': impl Trait<u64>
964 [246; 253) 'x.foo()': u64 964 246..253 'x.foo()': u64
965 [259; 260) 'y': &impl Trait<u32> 965 259..260 'y': &impl Trait<u32>
966 [259; 266) 'y.foo()': u32 966 259..266 'y.foo()': u32
967 [272; 273) 'z': S<u16> 967 272..273 'z': S<u16>
968 [272; 279) 'z.foo()': u16 968 272..279 'z.foo()': u16
969 [285; 286) 'x': impl Trait<u64> 969 285..286 'x': impl Trait<u64>
970 [285; 293) 'x.foo2()': i64 970 285..293 'x.foo2()': i64
971 [299; 300) 'y': &impl Trait<u32> 971 299..300 'y': &impl Trait<u32>
972 [299; 307) 'y.foo2()': i64 972 299..307 'y.foo2()': i64
973 [313; 314) 'z': S<u16> 973 313..314 'z': S<u16>
974 [313; 321) 'z.foo2()': i64 974 313..321 'z.foo2()': i64
975 "### 975 "###
976 ); 976 );
977} 977}
@@ -1005,39 +1005,39 @@ fn test() {
1005} 1005}
1006"#, true), 1006"#, true),
1007 @r###" 1007 @r###"
1008 [156; 157) 'x': impl Trait 1008 156..157 'x': impl Trait
1009 [176; 187) '{ loop {} }': T 1009 176..187 '{ loop {} }': T
1010 [178; 185) 'loop {}': ! 1010 178..185 'loop {}': !
1011 [183; 185) '{}': () 1011 183..185 '{}': ()
1012 [200; 201) 'x': impl Trait 1012 200..201 'x': impl Trait
1013 [220; 231) '{ loop {} }': T 1013 220..231 '{ loop {} }': T
1014 [222; 229) 'loop {}': ! 1014 222..229 'loop {}': !
1015 [227; 229) '{}': () 1015 227..229 '{}': ()
1016 [301; 510) '{ ... i32 }': () 1016 301..510 '{ ... i32 }': ()
1017 [307; 315) 'Foo::bar': fn bar<{unknown}, {unknown}>(S) -> {unknown} 1017 307..315 'Foo::bar': fn bar<{unknown}, {unknown}>(S) -> {unknown}
1018 [307; 318) 'Foo::bar(S)': {unknown} 1018 307..318 'Foo::bar(S)': {unknown}
1019 [316; 317) 'S': S 1019 316..317 'S': S
1020 [324; 339) '<F as Foo>::bar': fn bar<F, {unknown}>(S) -> {unknown} 1020 324..339 '<F as Foo>::bar': fn bar<F, {unknown}>(S) -> {unknown}
1021 [324; 342) '<F as ...bar(S)': {unknown} 1021 324..342 '<F as ...bar(S)': {unknown}
1022 [340; 341) 'S': S 1022 340..341 'S': S
1023 [348; 354) 'F::bar': fn bar<F, {unknown}>(S) -> {unknown} 1023 348..354 'F::bar': fn bar<F, {unknown}>(S) -> {unknown}
1024 [348; 357) 'F::bar(S)': {unknown} 1024 348..357 'F::bar(S)': {unknown}
1025 [355; 356) 'S': S 1025 355..356 'S': S
1026 [363; 378) 'Foo::bar::<u32>': fn bar<{unknown}, u32>(S) -> u32 1026 363..378 'Foo::bar::<u32>': fn bar<{unknown}, u32>(S) -> u32
1027 [363; 381) 'Foo::b...32>(S)': u32 1027 363..381 'Foo::b...32>(S)': u32
1028 [379; 380) 'S': S 1028 379..380 'S': S
1029 [387; 409) '<F as ...:<u32>': fn bar<F, u32>(S) -> u32 1029 387..409 '<F as ...:<u32>': fn bar<F, u32>(S) -> u32
1030 [387; 412) '<F as ...32>(S)': u32 1030 387..412 '<F as ...32>(S)': u32
1031 [410; 411) 'S': S 1031 410..411 'S': S
1032 [419; 422) 'foo': fn foo<{unknown}>(S) -> {unknown} 1032 419..422 'foo': fn foo<{unknown}>(S) -> {unknown}
1033 [419; 425) 'foo(S)': {unknown} 1033 419..425 'foo(S)': {unknown}
1034 [423; 424) 'S': S 1034 423..424 'S': S
1035 [431; 441) 'foo::<u32>': fn foo<u32>(S) -> u32 1035 431..441 'foo::<u32>': fn foo<u32>(S) -> u32
1036 [431; 444) 'foo::<u32>(S)': u32 1036 431..444 'foo::<u32>(S)': u32
1037 [442; 443) 'S': S 1037 442..443 'S': S
1038 [450; 465) 'foo::<u32, i32>': fn foo<u32>(S) -> u32 1038 450..465 'foo::<u32, i32>': fn foo<u32>(S) -> u32
1039 [450; 468) 'foo::<...32>(S)': u32 1039 450..468 'foo::<...32>(S)': u32
1040 [466; 467) 'S': S 1040 466..467 'S': S
1041 "### 1041 "###
1042 ); 1042 );
1043} 1043}
@@ -1062,24 +1062,24 @@ fn test() {
1062} 1062}
1063"#, true), 1063"#, true),
1064 @r###" 1064 @r###"
1065 [88; 92) 'self': F<T> 1065 88..92 'self': F<T>
1066 [94; 95) 'x': impl Trait 1066 94..95 'x': impl Trait
1067 [119; 130) '{ loop {} }': (T, U) 1067 119..130 '{ loop {} }': (T, U)
1068 [121; 128) 'loop {}': ! 1068 121..128 'loop {}': !
1069 [126; 128) '{}': () 1069 126..128 '{}': ()
1070 [144; 284) '{ ...ored }': () 1070 144..284 '{ ...ored }': ()
1071 [150; 151) 'F': F<{unknown}> 1071 150..151 'F': F<{unknown}>
1072 [150; 158) 'F.foo(S)': ({unknown}, {unknown}) 1072 150..158 'F.foo(S)': ({unknown}, {unknown})
1073 [156; 157) 'S': S 1073 156..157 'S': S
1074 [164; 172) 'F::<u32>': F<u32> 1074 164..172 'F::<u32>': F<u32>
1075 [164; 179) 'F::<u32>.foo(S)': (u32, {unknown}) 1075 164..179 'F::<u32>.foo(S)': (u32, {unknown})
1076 [177; 178) 'S': S 1076 177..178 'S': S
1077 [185; 193) 'F::<u32>': F<u32> 1077 185..193 'F::<u32>': F<u32>
1078 [185; 207) 'F::<u3...32>(S)': (u32, i32) 1078 185..207 'F::<u3...32>(S)': (u32, i32)
1079 [205; 206) 'S': S 1079 205..206 'S': S
1080 [213; 221) 'F::<u32>': F<u32> 1080 213..221 'F::<u32>': F<u32>
1081 [213; 240) 'F::<u3...32>(S)': (u32, i32) 1081 213..240 'F::<u3...32>(S)': (u32, i32)
1082 [238; 239) 'S': S 1082 238..239 'S': S
1083 "### 1083 "###
1084 ); 1084 );
1085} 1085}
@@ -1098,13 +1098,13 @@ fn test() {
1098} 1098}
1099"#, true), 1099"#, true),
1100 @r###" 1100 @r###"
1101 [23; 24) 'x': impl Trait 1101 23..24 'x': impl Trait
1102 [38; 49) '{ loop {} }': () 1102 38..49 '{ loop {} }': ()
1103 [40; 47) 'loop {}': ! 1103 40..47 'loop {}': !
1104 [45; 47) '{}': () 1104 45..47 '{}': ()
1105 [91; 124) '{ ...foo; }': () 1105 91..124 '{ ...foo; }': ()
1106 [101; 102) 'f': fn(S) 1106 101..102 'f': fn(S)
1107 [118; 121) 'foo': fn foo(S) 1107 118..121 'foo': fn foo(S)
1108 "### 1108 "###
1109 ); 1109 );
1110} 1110}
@@ -1133,29 +1133,29 @@ fn test(x: impl Trait<u64>, y: &impl Trait<u64>) {
1133} 1133}
1134"#), 1134"#),
1135 @r###" 1135 @r###"
1136 [30; 34) 'self': &Self 1136 30..34 'self': &Self
1137 [55; 59) 'self': &Self 1137 55..59 'self': &Self
1138 [99; 101) '{}': () 1138 99..101 '{}': ()
1139 [111; 112) 'x': impl Trait<u64> 1139 111..112 'x': impl Trait<u64>
1140 [131; 132) 'y': &impl Trait<u64> 1140 131..132 'y': &impl Trait<u64>
1141 [152; 269) '{ ...2(); }': () 1141 152..269 '{ ...2(); }': ()
1142 [158; 159) 'x': impl Trait<u64> 1142 158..159 'x': impl Trait<u64>
1143 [165; 166) 'y': &impl Trait<u64> 1143 165..166 'y': &impl Trait<u64>
1144 [176; 177) 'z': impl Trait<u64> 1144 176..177 'z': impl Trait<u64>
1145 [180; 183) 'bar': fn bar() -> impl Trait<u64> 1145 180..183 'bar': fn bar() -> impl Trait<u64>
1146 [180; 185) 'bar()': impl Trait<u64> 1146 180..185 'bar()': impl Trait<u64>
1147 [191; 192) 'x': impl Trait<u64> 1147 191..192 'x': impl Trait<u64>
1148 [191; 198) 'x.foo()': u64 1148 191..198 'x.foo()': u64
1149 [204; 205) 'y': &impl Trait<u64> 1149 204..205 'y': &impl Trait<u64>
1150 [204; 211) 'y.foo()': u64 1150 204..211 'y.foo()': u64
1151 [217; 218) 'z': impl Trait<u64> 1151 217..218 'z': impl Trait<u64>
1152 [217; 224) 'z.foo()': u64 1152 217..224 'z.foo()': u64
1153 [230; 231) 'x': impl Trait<u64> 1153 230..231 'x': impl Trait<u64>
1154 [230; 238) 'x.foo2()': i64 1154 230..238 'x.foo2()': i64
1155 [244; 245) 'y': &impl Trait<u64> 1155 244..245 'y': &impl Trait<u64>
1156 [244; 252) 'y.foo2()': i64 1156 244..252 'y.foo2()': i64
1157 [258; 259) 'z': impl Trait<u64> 1157 258..259 'z': impl Trait<u64>
1158 [258; 266) 'z.foo2()': i64 1158 258..266 'z.foo2()': i64
1159 "### 1159 "###
1160 ); 1160 );
1161} 1161}
@@ -1183,29 +1183,29 @@ fn test(x: dyn Trait<u64>, y: &dyn Trait<u64>) {
1183} 1183}
1184"#), 1184"#),
1185 @r###" 1185 @r###"
1186 [30; 34) 'self': &Self 1186 30..34 'self': &Self
1187 [55; 59) 'self': &Self 1187 55..59 'self': &Self
1188 [98; 100) '{}': () 1188 98..100 '{}': ()
1189 [110; 111) 'x': dyn Trait<u64> 1189 110..111 'x': dyn Trait<u64>
1190 [129; 130) 'y': &dyn Trait<u64> 1190 129..130 'y': &dyn Trait<u64>
1191 [149; 266) '{ ...2(); }': () 1191 149..266 '{ ...2(); }': ()
1192 [155; 156) 'x': dyn Trait<u64> 1192 155..156 'x': dyn Trait<u64>
1193 [162; 163) 'y': &dyn Trait<u64> 1193 162..163 'y': &dyn Trait<u64>
1194 [173; 174) 'z': dyn Trait<u64> 1194 173..174 'z': dyn Trait<u64>
1195 [177; 180) 'bar': fn bar() -> dyn Trait<u64> 1195 177..180 'bar': fn bar() -> dyn Trait<u64>
1196 [177; 182) 'bar()': dyn Trait<u64> 1196 177..182 'bar()': dyn Trait<u64>
1197 [188; 189) 'x': dyn Trait<u64> 1197 188..189 'x': dyn Trait<u64>
1198 [188; 195) 'x.foo()': u64 1198 188..195 'x.foo()': u64
1199 [201; 202) 'y': &dyn Trait<u64> 1199 201..202 'y': &dyn Trait<u64>
1200 [201; 208) 'y.foo()': u64 1200 201..208 'y.foo()': u64
1201 [214; 215) 'z': dyn Trait<u64> 1201 214..215 'z': dyn Trait<u64>
1202 [214; 221) 'z.foo()': u64 1202 214..221 'z.foo()': u64
1203 [227; 228) 'x': dyn Trait<u64> 1203 227..228 'x': dyn Trait<u64>
1204 [227; 235) 'x.foo2()': i64 1204 227..235 'x.foo2()': i64
1205 [241; 242) 'y': &dyn Trait<u64> 1205 241..242 'y': &dyn Trait<u64>
1206 [241; 249) 'y.foo2()': i64 1206 241..249 'y.foo2()': i64
1207 [255; 256) 'z': dyn Trait<u64> 1207 255..256 'z': dyn Trait<u64>
1208 [255; 263) 'z.foo2()': i64 1208 255..263 'z.foo2()': i64
1209 "### 1209 "###
1210 ); 1210 );
1211} 1211}
@@ -1231,17 +1231,17 @@ fn test(s: S<u32, i32>) {
1231} 1231}
1232"#), 1232"#),
1233 @r###" 1233 @r###"
1234 [33; 37) 'self': &Self 1234 33..37 'self': &Self
1235 [103; 107) 'self': &S<T, U> 1235 103..107 'self': &S<T, U>
1236 [129; 140) '{ loop {} }': &dyn Trait<T, U> 1236 129..140 '{ loop {} }': &dyn Trait<T, U>
1237 [131; 138) 'loop {}': ! 1237 131..138 'loop {}': !
1238 [136; 138) '{}': () 1238 136..138 '{}': ()
1239 [176; 180) 'self': &Self 1239 176..180 'self': &Self
1240 [252; 253) 's': S<u32, i32> 1240 252..253 's': S<u32, i32>
1241 [268; 290) '{ ...z(); }': () 1241 268..290 '{ ...z(); }': ()
1242 [274; 275) 's': S<u32, i32> 1242 274..275 's': S<u32, i32>
1243 [274; 281) 's.bar()': &dyn Trait<u32, i32> 1243 274..281 's.bar()': &dyn Trait<u32, i32>
1244 [274; 287) 's.bar().baz()': (u32, i32) 1244 274..287 's.bar().baz()': (u32, i32)
1245 "### 1245 "###
1246 ); 1246 );
1247} 1247}
@@ -1265,22 +1265,22 @@ fn test(x: Trait, y: &Trait) -> u64 {
1265} 1265}
1266"#), 1266"#),
1267 @r###" 1267 @r###"
1268 [27; 31) 'self': &Self 1268 27..31 'self': &Self
1269 [61; 63) '{}': () 1269 61..63 '{}': ()
1270 [73; 74) 'x': dyn Trait 1270 73..74 'x': dyn Trait
1271 [83; 84) 'y': &dyn Trait 1271 83..84 'y': &dyn Trait
1272 [101; 176) '{ ...o(); }': () 1272 101..176 '{ ...o(); }': ()
1273 [107; 108) 'x': dyn Trait 1273 107..108 'x': dyn Trait
1274 [114; 115) 'y': &dyn Trait 1274 114..115 'y': &dyn Trait
1275 [125; 126) 'z': dyn Trait 1275 125..126 'z': dyn Trait
1276 [129; 132) 'bar': fn bar() -> dyn Trait 1276 129..132 'bar': fn bar() -> dyn Trait
1277 [129; 134) 'bar()': dyn Trait 1277 129..134 'bar()': dyn Trait
1278 [140; 141) 'x': dyn Trait 1278 140..141 'x': dyn Trait
1279 [140; 147) 'x.foo()': u64 1279 140..147 'x.foo()': u64
1280 [153; 154) 'y': &dyn Trait 1280 153..154 'y': &dyn Trait
1281 [153; 160) 'y.foo()': u64 1281 153..160 'y.foo()': u64
1282 [166; 167) 'z': dyn Trait 1282 166..167 'z': dyn Trait
1283 [166; 173) 'z.foo()': u64 1283 166..173 'z.foo()': u64
1284 "### 1284 "###
1285 ); 1285 );
1286} 1286}
@@ -1294,13 +1294,13 @@ fn test(a: impl Trait + 'lifetime, b: impl 'lifetime, c: impl (Trait), d: impl (
1294} 1294}
1295"#), 1295"#),
1296 @r###" 1296 @r###"
1297 [24; 25) 'a': impl Trait + {error} 1297 24..25 'a': impl Trait + {error}
1298 [51; 52) 'b': impl {error} 1298 51..52 'b': impl {error}
1299 [70; 71) 'c': impl Trait 1299 70..71 'c': impl Trait
1300 [87; 88) 'd': impl {error} 1300 87..88 'd': impl {error}
1301 [108; 109) 'e': impl {error} 1301 108..109 'e': impl {error}
1302 [124; 125) 'f': impl Trait + {error} 1302 124..125 'f': impl Trait + {error}
1303 [148; 151) '{ }': () 1303 148..151 '{ }': ()
1304 "### 1304 "###
1305 ); 1305 );
1306} 1306}
@@ -1349,41 +1349,41 @@ fn test<T: Trait<Type = u32>>(x: T, y: impl Trait<Type = i64>) {
1349} 1349}
1350"#), 1350"#),
1351 @r###" 1351 @r###"
1352 [50; 51) 't': T 1352 50..51 't': T
1353 [78; 80) '{}': () 1353 78..80 '{}': ()
1354 [112; 113) 't': T 1354 112..113 't': T
1355 [123; 125) '{}': () 1355 123..125 '{}': ()
1356 [155; 156) 't': T 1356 155..156 't': T
1357 [166; 169) '{t}': T 1357 166..169 '{t}': T
1358 [167; 168) 't': T 1358 167..168 't': T
1359 [257; 258) 'x': T 1359 257..258 'x': T
1360 [263; 264) 'y': impl Trait<Type = i64> 1360 263..264 'y': impl Trait<Type = i64>
1361 [290; 398) '{ ...r>); }': () 1361 290..398 '{ ...r>); }': ()
1362 [296; 299) 'get': fn get<T>(T) -> <T as Trait>::Type 1362 296..299 'get': fn get<T>(T) -> <T as Trait>::Type
1363 [296; 302) 'get(x)': u32 1363 296..302 'get(x)': u32
1364 [300; 301) 'x': T 1364 300..301 'x': T
1365 [308; 312) 'get2': fn get2<u32, T>(T) -> u32 1365 308..312 'get2': fn get2<u32, T>(T) -> u32
1366 [308; 315) 'get2(x)': u32 1366 308..315 'get2(x)': u32
1367 [313; 314) 'x': T 1367 313..314 'x': T
1368 [321; 324) 'get': fn get<impl Trait<Type = i64>>(impl Trait<Type = i64>) -> <impl Trait<Type = i64> as Trait>::Type 1368 321..324 'get': fn get<impl Trait<Type = i64>>(impl Trait<Type = i64>) -> <impl Trait<Type = i64> as Trait>::Type
1369 [321; 327) 'get(y)': i64 1369 321..327 'get(y)': i64
1370 [325; 326) 'y': impl Trait<Type = i64> 1370 325..326 'y': impl Trait<Type = i64>
1371 [333; 337) 'get2': fn get2<i64, impl Trait<Type = i64>>(impl Trait<Type = i64>) -> i64 1371 333..337 'get2': fn get2<i64, impl Trait<Type = i64>>(impl Trait<Type = i64>) -> i64
1372 [333; 340) 'get2(y)': i64 1372 333..340 'get2(y)': i64
1373 [338; 339) 'y': impl Trait<Type = i64> 1373 338..339 'y': impl Trait<Type = i64>
1374 [346; 349) 'get': fn get<S<u64>>(S<u64>) -> <S<u64> as Trait>::Type 1374 346..349 'get': fn get<S<u64>>(S<u64>) -> <S<u64> as Trait>::Type
1375 [346; 357) 'get(set(S))': u64 1375 346..357 'get(set(S))': u64
1376 [350; 353) 'set': fn set<S<u64>>(S<u64>) -> S<u64> 1376 350..353 'set': fn set<S<u64>>(S<u64>) -> S<u64>
1377 [350; 356) 'set(S)': S<u64> 1377 350..356 'set(S)': S<u64>
1378 [354; 355) 'S': S<u64> 1378 354..355 'S': S<u64>
1379 [363; 367) 'get2': fn get2<u64, S<u64>>(S<u64>) -> u64 1379 363..367 'get2': fn get2<u64, S<u64>>(S<u64>) -> u64
1380 [363; 375) 'get2(set(S))': u64 1380 363..375 'get2(set(S))': u64
1381 [368; 371) 'set': fn set<S<u64>>(S<u64>) -> S<u64> 1381 368..371 'set': fn set<S<u64>>(S<u64>) -> S<u64>
1382 [368; 374) 'set(S)': S<u64> 1382 368..374 'set(S)': S<u64>
1383 [372; 373) 'S': S<u64> 1383 372..373 'S': S<u64>
1384 [381; 385) 'get2': fn get2<str, S<str>>(S<str>) -> str 1384 381..385 'get2': fn get2<str, S<str>>(S<str>) -> str
1385 [381; 395) 'get2(S::<str>)': str 1385 381..395 'get2(S::<str>)': str
1386 [386; 394) 'S::<str>': S<str> 1386 386..394 'S::<str>': S<str>
1387 "### 1387 "###
1388 ); 1388 );
1389} 1389}
@@ -1448,11 +1448,11 @@ fn test<T: Trait1<Type = u32>>(x: T) {
1448} 1448}
1449"#), 1449"#),
1450 @r###" 1450 @r###"
1451 [62; 66) 'self': Self 1451 62..66 'self': Self
1452 [164; 165) 'x': T 1452 164..165 'x': T
1453 [170; 186) '{ ...o(); }': () 1453 170..186 '{ ...o(); }': ()
1454 [176; 177) 'x': T 1454 176..177 'x': T
1455 [176; 183) 'x.foo()': u32 1455 176..183 'x.foo()': u32
1456 "### 1456 "###
1457 ); 1457 );
1458} 1458}
@@ -1494,15 +1494,15 @@ fn test<T: Trait1, U: Trait2>(x: T, y: U) {
1494} 1494}
1495"#), 1495"#),
1496 @r###" 1496 @r###"
1497 [50; 54) 'self': &Self 1497 50..54 'self': &Self
1498 [63; 65) '{}': () 1498 63..65 '{}': ()
1499 [182; 183) 'x': T 1499 182..183 'x': T
1500 [188; 189) 'y': U 1500 188..189 'y': U
1501 [194; 223) '{ ...o(); }': () 1501 194..223 '{ ...o(); }': ()
1502 [200; 201) 'x': T 1502 200..201 'x': T
1503 [200; 207) 'x.foo()': u32 1503 200..207 'x.foo()': u32
1504 [213; 214) 'y': U 1504 213..214 'y': U
1505 [213; 220) 'y.foo()': u32 1505 213..220 'y.foo()': u32
1506 "### 1506 "###
1507 ); 1507 );
1508} 1508}
@@ -1523,12 +1523,12 @@ fn test(x: &impl Trait1) {
1523} 1523}
1524"#), 1524"#),
1525 @r###" 1525 @r###"
1526 [50; 54) 'self': &Self 1526 50..54 'self': &Self
1527 [63; 65) '{}': () 1527 63..65 '{}': ()
1528 [116; 117) 'x': &impl Trait1 1528 116..117 'x': &impl Trait1
1529 [133; 149) '{ ...o(); }': () 1529 133..149 '{ ...o(); }': ()
1530 [139; 140) 'x': &impl Trait1 1530 139..140 'x': &impl Trait1
1531 [139; 146) 'x.foo()': u32 1531 139..146 'x.foo()': u32
1532 "### 1532 "###
1533 ); 1533 );
1534} 1534}
@@ -1546,10 +1546,10 @@ fn test<T: A>(x: T) {
1546} 1546}
1547"#), 1547"#),
1548 @r###" 1548 @r###"
1549 [44; 45) 'x': T 1549 44..45 'x': T
1550 [50; 66) '{ ...o(); }': () 1550 50..66 '{ ...o(); }': ()
1551 [56; 57) 'x': T 1551 56..57 'x': T
1552 [56; 63) 'x.foo()': {unknown} 1552 56..63 'x.foo()': {unknown}
1553 "### 1553 "###
1554 ); 1554 );
1555} 1555}
@@ -1573,17 +1573,17 @@ fn test() {
1573} 1573}
1574"#), 1574"#),
1575 @r###" 1575 @r###"
1576 [103; 104) 't': T 1576 103..104 't': T
1577 [114; 116) '{}': () 1577 114..116 '{}': ()
1578 [146; 147) 't': T 1578 146..147 't': T
1579 [157; 160) '{t}': T 1579 157..160 '{t}': T
1580 [158; 159) 't': T 1580 158..159 't': T
1581 [259; 280) '{ ...S)); }': () 1581 259..280 '{ ...S)); }': ()
1582 [265; 269) 'get2': fn get2<u64, S<u64>>(S<u64>) -> u64 1582 265..269 'get2': fn get2<u64, S<u64>>(S<u64>) -> u64
1583 [265; 277) 'get2(set(S))': u64 1583 265..277 'get2(set(S))': u64
1584 [270; 273) 'set': fn set<S<u64>>(S<u64>) -> S<u64> 1584 270..273 'set': fn set<S<u64>>(S<u64>) -> S<u64>
1585 [270; 276) 'set(S)': S<u64> 1585 270..276 'set(S)': S<u64>
1586 [274; 275) 'S': S<u64> 1586 274..275 'S': S<u64>
1587 "### 1587 "###
1588 ); 1588 );
1589} 1589}
@@ -1603,15 +1603,15 @@ fn test<F: FnOnce(u32, u64) -> u128>(f: F) {
1603} 1603}
1604"#), 1604"#),
1605 @r###" 1605 @r###"
1606 [57; 61) 'self': Self 1606 57..61 'self': Self
1607 [63; 67) 'args': Args 1607 63..67 'args': Args
1608 [150; 151) 'f': F 1608 150..151 'f': F
1609 [156; 184) '{ ...2)); }': () 1609 156..184 '{ ...2)); }': ()
1610 [162; 163) 'f': F 1610 162..163 'f': F
1611 [162; 181) 'f.call...1, 2))': u128 1611 162..181 'f.call...1, 2))': u128
1612 [174; 180) '(1, 2)': (u32, u64) 1612 174..180 '(1, 2)': (u32, u64)
1613 [175; 176) '1': u32 1613 175..176 '1': u32
1614 [178; 179) '2': u64 1614 178..179 '2': u64
1615 "### 1615 "###
1616 ); 1616 );
1617} 1617}
@@ -1638,32 +1638,32 @@ fn test() {
1638} 1638}
1639"#), 1639"#),
1640 @r###" 1640 @r###"
1641 [148; 152) 'self': Option<T> 1641 148..152 'self': Option<T>
1642 [154; 155) 'f': F 1642 154..155 'f': F
1643 [173; 175) '{}': () 1643 173..175 '{}': ()
1644 [189; 308) '{ ... 1); }': () 1644 189..308 '{ ... 1); }': ()
1645 [199; 200) 'x': Option<u32> 1645 199..200 'x': Option<u32>
1646 [203; 215) 'Option::Some': Some<u32>(u32) -> Option<u32> 1646 203..215 'Option::Some': Some<u32>(u32) -> Option<u32>
1647 [203; 221) 'Option...(1u32)': Option<u32> 1647 203..221 'Option...(1u32)': Option<u32>
1648 [216; 220) '1u32': u32 1648 216..220 '1u32': u32
1649 [227; 228) 'x': Option<u32> 1649 227..228 'x': Option<u32>
1650 [227; 243) 'x.map(...v + 1)': Option<u32> 1650 227..243 'x.map(...v + 1)': Option<u32>
1651 [233; 242) '|v| v + 1': |u32| -> u32 1651 233..242 '|v| v + 1': |u32| -> u32
1652 [234; 235) 'v': u32 1652 234..235 'v': u32
1653 [237; 238) 'v': u32 1653 237..238 'v': u32
1654 [237; 242) 'v + 1': u32 1654 237..242 'v + 1': u32
1655 [241; 242) '1': u32 1655 241..242 '1': u32
1656 [249; 250) 'x': Option<u32> 1656 249..250 'x': Option<u32>
1657 [249; 265) 'x.map(... 1u64)': Option<u64> 1657 249..265 'x.map(... 1u64)': Option<u64>
1658 [255; 264) '|_v| 1u64': |u32| -> u64 1658 255..264 '|_v| 1u64': |u32| -> u64
1659 [256; 258) '_v': u32 1659 256..258 '_v': u32
1660 [260; 264) '1u64': u64 1660 260..264 '1u64': u64
1661 [275; 276) 'y': Option<i64> 1661 275..276 'y': Option<i64>
1662 [292; 293) 'x': Option<u32> 1662 292..293 'x': Option<u32>
1663 [292; 305) 'x.map(|_v| 1)': Option<i64> 1663 292..305 'x.map(|_v| 1)': Option<i64>
1664 [298; 304) '|_v| 1': |u32| -> i64 1664 298..304 '|_v| 1': |u32| -> i64
1665 [299; 301) '_v': u32 1665 299..301 '_v': u32
1666 [303; 304) '1': i64 1666 303..304 '1': i64
1667 "### 1667 "###
1668 ); 1668 );
1669} 1669}
@@ -1684,26 +1684,26 @@ fn test<F: FnOnce(u32) -> u64>(f: F) {
1684} 1684}
1685"#), 1685"#),
1686 @r###" 1686 @r###"
1687 [73; 74) 'f': F 1687 73..74 'f': F
1688 [79; 155) '{ ...+ v; }': () 1688 79..155 '{ ...+ v; }': ()
1689 [85; 86) 'f': F 1689 85..86 'f': F
1690 [85; 89) 'f(1)': {unknown} 1690 85..89 'f(1)': {unknown}
1691 [87; 88) '1': i32 1691 87..88 '1': i32
1692 [99; 100) 'g': |u64| -> i32 1692 99..100 'g': |u64| -> i32
1693 [103; 112) '|v| v + 1': |u64| -> i32 1693 103..112 '|v| v + 1': |u64| -> i32
1694 [104; 105) 'v': u64 1694 104..105 'v': u64
1695 [107; 108) 'v': u64 1695 107..108 'v': u64
1696 [107; 112) 'v + 1': i32 1696 107..112 'v + 1': i32
1697 [111; 112) '1': i32 1697 111..112 '1': i32
1698 [118; 119) 'g': |u64| -> i32 1698 118..119 'g': |u64| -> i32
1699 [118; 125) 'g(1u64)': i32 1699 118..125 'g(1u64)': i32
1700 [120; 124) '1u64': u64 1700 120..124 '1u64': u64
1701 [135; 136) 'h': |u128| -> u128 1701 135..136 'h': |u128| -> u128
1702 [139; 152) '|v| 1u128 + v': |u128| -> u128 1702 139..152 '|v| 1u128 + v': |u128| -> u128
1703 [140; 141) 'v': u128 1703 140..141 'v': u128
1704 [143; 148) '1u128': u128 1704 143..148 '1u128': u128
1705 [143; 152) '1u128 + v': u128 1705 143..152 '1u128 + v': u128
1706 [151; 152) 'v': u128 1706 151..152 'v': u128
1707 "### 1707 "###
1708 ); 1708 );
1709} 1709}
@@ -1736,54 +1736,54 @@ fn test() {
1736} 1736}
1737"#), 1737"#),
1738 @r###" 1738 @r###"
1739 [95; 96) 'x': T 1739 95..96 'x': T
1740 [101; 102) 'f': F 1740 101..102 'f': F
1741 [112; 114) '{}': () 1741 112..114 '{}': ()
1742 [148; 149) 'f': F 1742 148..149 'f': F
1743 [154; 155) 'x': T 1743 154..155 'x': T
1744 [165; 167) '{}': () 1744 165..167 '{}': ()
1745 [202; 206) 'self': S 1745 202..206 'self': S
1746 [254; 258) 'self': S 1746 254..258 'self': S
1747 [260; 261) 'x': T 1747 260..261 'x': T
1748 [266; 267) 'f': F 1748 266..267 'f': F
1749 [277; 279) '{}': () 1749 277..279 '{}': ()
1750 [317; 321) 'self': S 1750 317..321 'self': S
1751 [323; 324) 'f': F 1751 323..324 'f': F
1752 [329; 330) 'x': T 1752 329..330 'x': T
1753 [340; 342) '{}': () 1753 340..342 '{}': ()
1754 [356; 515) '{ ... S); }': () 1754 356..515 '{ ... S); }': ()
1755 [366; 368) 'x1': u64 1755 366..368 'x1': u64
1756 [371; 375) 'foo1': fn foo1<S, u64, |S| -> u64>(S, |S| -> u64) -> u64 1756 371..375 'foo1': fn foo1<S, u64, |S| -> u64>(S, |S| -> u64) -> u64
1757 [371; 394) 'foo1(S...hod())': u64 1757 371..394 'foo1(S...hod())': u64
1758 [376; 377) 'S': S 1758 376..377 'S': S
1759 [379; 393) '|s| s.method()': |S| -> u64 1759 379..393 '|s| s.method()': |S| -> u64
1760 [380; 381) 's': S 1760 380..381 's': S
1761 [383; 384) 's': S 1761 383..384 's': S
1762 [383; 393) 's.method()': u64 1762 383..393 's.method()': u64
1763 [404; 406) 'x2': u64 1763 404..406 'x2': u64
1764 [409; 413) 'foo2': fn foo2<S, u64, |S| -> u64>(|S| -> u64, S) -> u64 1764 409..413 'foo2': fn foo2<S, u64, |S| -> u64>(|S| -> u64, S) -> u64
1765 [409; 432) 'foo2(|...(), S)': u64 1765 409..432 'foo2(|...(), S)': u64
1766 [414; 428) '|s| s.method()': |S| -> u64 1766 414..428 '|s| s.method()': |S| -> u64
1767 [415; 416) 's': S 1767 415..416 's': S
1768 [418; 419) 's': S 1768 418..419 's': S
1769 [418; 428) 's.method()': u64 1769 418..428 's.method()': u64
1770 [430; 431) 'S': S 1770 430..431 'S': S
1771 [442; 444) 'x3': u64 1771 442..444 'x3': u64
1772 [447; 448) 'S': S 1772 447..448 'S': S
1773 [447; 472) 'S.foo1...hod())': u64 1773 447..472 'S.foo1...hod())': u64
1774 [454; 455) 'S': S 1774 454..455 'S': S
1775 [457; 471) '|s| s.method()': |S| -> u64 1775 457..471 '|s| s.method()': |S| -> u64
1776 [458; 459) 's': S 1776 458..459 's': S
1777 [461; 462) 's': S 1777 461..462 's': S
1778 [461; 471) 's.method()': u64 1778 461..471 's.method()': u64
1779 [482; 484) 'x4': u64 1779 482..484 'x4': u64
1780 [487; 488) 'S': S 1780 487..488 'S': S
1781 [487; 512) 'S.foo2...(), S)': u64 1781 487..512 'S.foo2...(), S)': u64
1782 [494; 508) '|s| s.method()': |S| -> u64 1782 494..508 '|s| s.method()': |S| -> u64
1783 [495; 496) 's': S 1783 495..496 's': S
1784 [498; 499) 's': S 1784 498..499 's': S
1785 [498; 508) 's.method()': u64 1785 498..508 's.method()': u64
1786 [510; 511) 'S': S 1786 510..511 'S': S
1787 "### 1787 "###
1788 ); 1788 );
1789} 1789}
@@ -1858,18 +1858,18 @@ impl Trait for S2 {
1858} 1858}
1859"#, 1859"#,
1860 ), @r###" 1860 ), @r###"
1861 [54; 58) 'self': &Self 1861 54..58 'self': &Self
1862 [60; 61) 'x': Trait::Item<Self> 1862 60..61 'x': Trait::Item<Self>
1863 [140; 144) 'self': &S 1863 140..144 'self': &S
1864 [146; 147) 'x': u32 1864 146..147 'x': u32
1865 [161; 175) '{ let y = x; }': () 1865 161..175 '{ let y = x; }': ()
1866 [167; 168) 'y': u32 1866 167..168 'y': u32
1867 [171; 172) 'x': u32 1867 171..172 'x': u32
1868 [242; 246) 'self': &S2 1868 242..246 'self': &S2
1869 [248; 249) 'x': i32 1869 248..249 'x': i32
1870 [265; 279) '{ let y = x; }': () 1870 265..279 '{ let y = x; }': ()
1871 [271; 272) 'y': i32 1871 271..272 'y': i32
1872 [275; 276) 'x': i32 1872 275..276 'x': i32
1873 "###); 1873 "###);
1874} 1874}
1875 1875
@@ -2077,15 +2077,15 @@ impl TokenStream for Rustc {
2077} 2077}
2078"#, true), 2078"#, true),
2079 @r###" 2079 @r###"
2080 [1115; 1126) '{ loop {} }': T 2080 1115..1126 '{ loop {} }': T
2081 [1117; 1124) 'loop {}': ! 2081 1117..1124 'loop {}': !
2082 [1122; 1124) '{}': () 2082 1122..1124 '{}': ()
2083 [1190; 1253) '{ ... }': {unknown} 2083 1190..1253 '{ ... }': {unknown}
2084 [1204; 1209) 'group': {unknown} 2084 1204..1209 'group': {unknown}
2085 [1225; 1229) 'make': fn make<{unknown}>() -> {unknown} 2085 1225..1229 'make': fn make<{unknown}>() -> {unknown}
2086 [1225; 1231) 'make()': {unknown} 2086 1225..1231 'make()': {unknown}
2087 [1241; 1245) 'make': fn make<{unknown}>() -> {unknown} 2087 1241..1245 'make': fn make<{unknown}>() -> {unknown}
2088 [1241; 1247) 'make()': {unknown} 2088 1241..1247 'make()': {unknown}
2089 "### 2089 "###
2090 ); 2090 );
2091} 2091}
@@ -2112,37 +2112,37 @@ fn test() -> impl Trait<i32> {
2112} 2112}
2113"#, true), 2113"#, true),
2114 @r###" 2114 @r###"
2115 [27; 28) 'x': impl Trait<u32> 2115 27..28 'x': impl Trait<u32>
2116 [47; 58) '{ loop {} }': () 2116 47..58 '{ loop {} }': ()
2117 [49; 56) 'loop {}': ! 2117 49..56 'loop {}': !
2118 [54; 56) '{}': () 2118 54..56 '{}': ()
2119 [69; 70) 'x': impl Trait<T> 2119 69..70 'x': impl Trait<T>
2120 [92; 103) '{ loop {} }': T 2120 92..103 '{ loop {} }': T
2121 [94; 101) 'loop {}': ! 2121 94..101 'loop {}': !
2122 [99; 101) '{}': () 2122 99..101 '{}': ()
2123 [172; 183) '{ loop {} }': T 2123 172..183 '{ loop {} }': T
2124 [174; 181) 'loop {}': ! 2124 174..181 'loop {}': !
2125 [179; 181) '{}': () 2125 179..181 '{}': ()
2126 [214; 310) '{ ...t()) }': S<{unknown}> 2126 214..310 '{ ...t()) }': S<{unknown}>
2127 [224; 226) 's1': S<u32> 2127 224..226 's1': S<u32>
2128 [229; 230) 'S': S<u32>(u32) -> S<u32> 2128 229..230 'S': S<u32>(u32) -> S<u32>
2129 [229; 241) 'S(default())': S<u32> 2129 229..241 'S(default())': S<u32>
2130 [231; 238) 'default': fn default<u32>() -> u32 2130 231..238 'default': fn default<u32>() -> u32
2131 [231; 240) 'default()': u32 2131 231..240 'default()': u32
2132 [247; 250) 'foo': fn foo(S<u32>) 2132 247..250 'foo': fn foo(S<u32>)
2133 [247; 254) 'foo(s1)': () 2133 247..254 'foo(s1)': ()
2134 [251; 253) 's1': S<u32> 2134 251..253 's1': S<u32>
2135 [264; 265) 'x': i32 2135 264..265 'x': i32
2136 [273; 276) 'bar': fn bar<i32>(S<i32>) -> i32 2136 273..276 'bar': fn bar<i32>(S<i32>) -> i32
2137 [273; 290) 'bar(S(...lt()))': i32 2137 273..290 'bar(S(...lt()))': i32
2138 [277; 278) 'S': S<i32>(i32) -> S<i32> 2138 277..278 'S': S<i32>(i32) -> S<i32>
2139 [277; 289) 'S(default())': S<i32> 2139 277..289 'S(default())': S<i32>
2140 [279; 286) 'default': fn default<i32>() -> i32 2140 279..286 'default': fn default<i32>() -> i32
2141 [279; 288) 'default()': i32 2141 279..288 'default()': i32
2142 [296; 297) 'S': S<{unknown}>({unknown}) -> S<{unknown}> 2142 296..297 'S': S<{unknown}>({unknown}) -> S<{unknown}>
2143 [296; 308) 'S(default())': S<{unknown}> 2143 296..308 'S(default())': S<{unknown}>
2144 [298; 305) 'default': fn default<{unknown}>() -> {unknown} 2144 298..305 'default': fn default<{unknown}>() -> {unknown}
2145 [298; 307) 'default()': {unknown} 2145 298..307 'default()': {unknown}
2146 "### 2146 "###
2147 ); 2147 );
2148} 2148}
@@ -2176,15 +2176,15 @@ fn main() {
2176} 2176}
2177"#), 2177"#),
2178 @r###" 2178 @r###"
2179 [147; 149) '_v': F 2179 147..149 '_v': F
2180 [192; 195) '{ }': () 2180 192..195 '{ }': ()
2181 [207; 238) '{ ... }); }': () 2181 207..238 '{ ... }); }': ()
2182 [213; 223) 'f::<(), _>': fn f<(), |&()| -> ()>(|&()| -> ()) 2182 213..223 'f::<(), _>': fn f<(), |&()| -> ()>(|&()| -> ())
2183 [213; 235) 'f::<()... z; })': () 2183 213..235 'f::<()... z; })': ()
2184 [224; 234) '|z| { z; }': |&()| -> () 2184 224..234 '|z| { z; }': |&()| -> ()
2185 [225; 226) 'z': &() 2185 225..226 'z': &()
2186 [228; 234) '{ z; }': () 2186 228..234 '{ z; }': ()
2187 [230; 231) 'z': &() 2187 230..231 'z': &()
2188 "### 2188 "###
2189 ); 2189 );
2190} 2190}
@@ -2337,46 +2337,46 @@ fn main() {
2337} 2337}
2338"#), 2338"#),
2339 @r###" 2339 @r###"
2340 [240; 244) 'self': Self 2340 240..244 'self': Self
2341 [246; 247) 'f': F 2341 246..247 'f': F
2342 [331; 342) '{ loop {} }': FilterMap<Self, F> 2342 331..342 '{ loop {} }': FilterMap<Self, F>
2343 [333; 340) 'loop {}': ! 2343 333..340 'loop {}': !
2344 [338; 340) '{}': () 2344 338..340 '{}': ()
2345 [363; 367) 'self': Self 2345 363..367 'self': Self
2346 [369; 370) 'f': F 2346 369..370 'f': F
2347 [419; 430) '{ loop {} }': () 2347 419..430 '{ loop {} }': ()
2348 [421; 428) 'loop {}': ! 2348 421..428 'loop {}': !
2349 [426; 428) '{}': () 2349 426..428 '{}': ()
2350 [539; 543) 'self': Self 2350 539..543 'self': Self
2351 [868; 872) 'self': I 2351 868..872 'self': I
2352 [879; 899) '{ ... }': I 2352 879..899 '{ ... }': I
2353 [889; 893) 'self': I 2353 889..893 'self': I
2354 [958; 969) '{ loop {} }': Vec<T> 2354 958..969 '{ loop {} }': Vec<T>
2355 [960; 967) 'loop {}': ! 2355 960..967 'loop {}': !
2356 [965; 967) '{}': () 2356 965..967 '{}': ()
2357 [1156; 1287) '{ ... }); }': () 2357 1156..1287 '{ ... }); }': ()
2358 [1162; 1177) 'Vec::<i32>::new': fn new<i32>() -> Vec<i32> 2358 1162..1177 'Vec::<i32>::new': fn new<i32>() -> Vec<i32>
2359 [1162; 1179) 'Vec::<...:new()': Vec<i32> 2359 1162..1179 'Vec::<...:new()': Vec<i32>
2360 [1162; 1191) 'Vec::<...iter()': IntoIter<i32> 2360 1162..1191 'Vec::<...iter()': IntoIter<i32>
2361 [1162; 1256) 'Vec::<...one })': FilterMap<IntoIter<i32>, |i32| -> Option<u32>> 2361 1162..1256 'Vec::<...one })': FilterMap<IntoIter<i32>, |i32| -> Option<u32>>
2362 [1162; 1284) 'Vec::<... y; })': () 2362 1162..1284 'Vec::<... y; })': ()
2363 [1210; 1255) '|x| if...None }': |i32| -> Option<u32> 2363 1210..1255 '|x| if...None }': |i32| -> Option<u32>
2364 [1211; 1212) 'x': i32 2364 1211..1212 'x': i32
2365 [1214; 1255) 'if x >...None }': Option<u32> 2365 1214..1255 'if x >...None }': Option<u32>
2366 [1217; 1218) 'x': i32 2366 1217..1218 'x': i32
2367 [1217; 1222) 'x > 0': bool 2367 1217..1222 'x > 0': bool
2368 [1221; 1222) '0': i32 2368 1221..1222 '0': i32
2369 [1223; 1241) '{ Some...u32) }': Option<u32> 2369 1223..1241 '{ Some...u32) }': Option<u32>
2370 [1225; 1229) 'Some': Some<u32>(u32) -> Option<u32> 2370 1225..1229 'Some': Some<u32>(u32) -> Option<u32>
2371 [1225; 1239) 'Some(x as u32)': Option<u32> 2371 1225..1239 'Some(x as u32)': Option<u32>
2372 [1230; 1231) 'x': i32 2372 1230..1231 'x': i32
2373 [1230; 1238) 'x as u32': u32 2373 1230..1238 'x as u32': u32
2374 [1247; 1255) '{ None }': Option<u32> 2374 1247..1255 '{ None }': Option<u32>
2375 [1249; 1253) 'None': Option<u32> 2375 1249..1253 'None': Option<u32>
2376 [1273; 1283) '|y| { y; }': |u32| -> () 2376 1273..1283 '|y| { y; }': |u32| -> ()
2377 [1274; 1275) 'y': u32 2377 1274..1275 'y': u32
2378 [1277; 1283) '{ y; }': () 2378 1277..1283 '{ y; }': ()
2379 [1279; 1280) 'y': u32 2379 1279..1280 'y': u32
2380 "### 2380 "###
2381 ); 2381 );
2382} 2382}
@@ -2428,13 +2428,13 @@ fn test(x: &dyn Foo) {
2428} 2428}
2429"#, true), 2429"#, true),
2430 @r###" 2430 @r###"
2431 [22; 23) 'x': &dyn Foo 2431 22..23 'x': &dyn Foo
2432 [35; 37) '{}': () 2432 35..37 '{}': ()
2433 [47; 48) 'x': &dyn Foo 2433 47..48 'x': &dyn Foo
2434 [60; 75) '{ foo(x); }': () 2434 60..75 '{ foo(x); }': ()
2435 [66; 69) 'foo': fn foo(&dyn Foo) 2435 66..69 'foo': fn foo(&dyn Foo)
2436 [66; 72) 'foo(x)': () 2436 66..72 'foo(x)': ()
2437 [70; 71) 'x': &dyn Foo 2437 70..71 'x': &dyn Foo
2438 "### 2438 "###
2439 ); 2439 );
2440} 2440}