aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/tests/method_resolution.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_hir_ty/src/tests/method_resolution.rs')
-rw-r--r--crates/ra_hir_ty/src/tests/method_resolution.rs376
1 files changed, 188 insertions, 188 deletions
diff --git a/crates/ra_hir_ty/src/tests/method_resolution.rs b/crates/ra_hir_ty/src/tests/method_resolution.rs
index af3e5b12c..ab87f598a 100644
--- a/crates/ra_hir_ty/src/tests/method_resolution.rs
+++ b/crates/ra_hir_ty/src/tests/method_resolution.rs
@@ -22,14 +22,14 @@ fn test() {
22} 22}
23"#), 23"#),
24 @r###" 24 @r###"
25 [45; 49) 'self': &[T] 25 45..49 'self': &[T]
26 [56; 79) '{ ... }': T 26 56..79 '{ ... }': T
27 [66; 73) 'loop {}': ! 27 66..73 'loop {}': !
28 [71; 73) '{}': () 28 71..73 '{}': ()
29 [133; 160) '{ ...o"); }': () 29 133..160 '{ ...o"); }': ()
30 [139; 149) '<[_]>::foo': fn foo<u8>(&[u8]) -> u8 30 139..149 '<[_]>::foo': fn foo<u8>(&[u8]) -> u8
31 [139; 157) '<[_]>:..."foo")': u8 31 139..157 '<[_]>:..."foo")': u8
32 [150; 156) 'b"foo"': &[u8] 32 150..156 'b"foo"': &[u8]
33 "### 33 "###
34 ); 34 );
35} 35}
@@ -51,15 +51,15 @@ fn test() {
51} 51}
52"#), 52"#),
53 @r###" 53 @r###"
54 [49; 75) '{ ... }': A 54 49..75 '{ ... }': A
55 [59; 69) 'A { x: 0 }': A 55 59..69 'A { x: 0 }': A
56 [66; 67) '0': u32 56 66..67 '0': u32
57 [88; 122) '{ ...a.x; }': () 57 88..122 '{ ...a.x; }': ()
58 [98; 99) 'a': A 58 98..99 'a': A
59 [102; 108) 'A::new': fn new() -> A 59 102..108 'A::new': fn new() -> A
60 [102; 110) 'A::new()': A 60 102..110 'A::new()': A
61 [116; 117) 'a': A 61 116..117 'a': A
62 [116; 119) 'a.x': u32 62 116..119 'a.x': u32
63 "### 63 "###
64 ); 64 );
65} 65}
@@ -86,19 +86,19 @@ fn test() {
86} 86}
87"#), 87"#),
88 @r###" 88 @r###"
89 [47; 67) '{ ... }': A 89 47..67 '{ ... }': A
90 [57; 61) 'A::B': A 90 57..61 'A::B': A
91 [88; 108) '{ ... }': A 91 88..108 '{ ... }': A
92 [98; 102) 'A::C': A 92 98..102 'A::C': A
93 [121; 178) '{ ... c; }': () 93 121..178 '{ ... c; }': ()
94 [131; 132) 'a': A 94 131..132 'a': A
95 [135; 139) 'A::b': fn b() -> A 95 135..139 'A::b': fn b() -> A
96 [135; 141) 'A::b()': A 96 135..141 'A::b()': A
97 [147; 148) 'a': A 97 147..148 'a': A
98 [158; 159) 'c': A 98 158..159 'c': A
99 [162; 166) 'A::c': fn c() -> A 99 162..166 'A::c': fn c() -> A
100 [162; 168) 'A::c()': A 100 162..168 'A::c()': A
101 [174; 175) 'c': A 101 174..175 'c': A
102 "### 102 "###
103 ); 103 );
104} 104}
@@ -130,22 +130,22 @@ fn test() {
130} 130}
131"#), 131"#),
132 @r###" 132 @r###"
133 [56; 64) '{ A {} }': A 133 56..64 '{ A {} }': A
134 [58; 62) 'A {}': A 134 58..62 'A {}': A
135 [126; 132) '{ 99 }': u32 135 126..132 '{ 99 }': u32
136 [128; 130) '99': u32 136 128..130 '99': u32
137 [202; 210) '{ C {} }': C 137 202..210 '{ C {} }': C
138 [204; 208) 'C {}': C 138 204..208 'C {}': C
139 [241; 325) '{ ...g(); }': () 139 241..325 '{ ...g(); }': ()
140 [251; 252) 'x': A 140 251..252 'x': A
141 [255; 266) 'a::A::thing': fn thing() -> A 141 255..266 'a::A::thing': fn thing() -> A
142 [255; 268) 'a::A::thing()': A 142 255..268 'a::A::thing()': A
143 [278; 279) 'y': u32 143 278..279 'y': u32
144 [282; 293) 'b::B::thing': fn thing() -> u32 144 282..293 'b::B::thing': fn thing() -> u32
145 [282; 295) 'b::B::thing()': u32 145 282..295 'b::B::thing()': u32
146 [305; 306) 'z': C 146 305..306 'z': C
147 [309; 320) 'c::C::thing': fn thing() -> C 147 309..320 'c::C::thing': fn thing() -> C
148 [309; 322) 'c::C::thing()': C 148 309..322 'c::C::thing()': C
149 "### 149 "###
150 ); 150 );
151} 151}
@@ -169,15 +169,15 @@ fn test() {
169} 169}
170"#), 170"#),
171 @r###" 171 @r###"
172 [64; 67) 'val': T 172 64..67 'val': T
173 [82; 109) '{ ... }': Gen<T> 173 82..109 '{ ... }': Gen<T>
174 [92; 103) 'Gen { val }': Gen<T> 174 92..103 'Gen { val }': Gen<T>
175 [98; 101) 'val': T 175 98..101 'val': T
176 [123; 155) '{ ...32); }': () 176 123..155 '{ ...32); }': ()
177 [133; 134) 'a': Gen<u32> 177 133..134 'a': Gen<u32>
178 [137; 146) 'Gen::make': fn make<u32>(u32) -> Gen<u32> 178 137..146 'Gen::make': fn make<u32>(u32) -> Gen<u32>
179 [137; 152) 'Gen::make(0u32)': Gen<u32> 179 137..152 'Gen::make(0u32)': Gen<u32>
180 [147; 151) '0u32': u32 180 147..151 '0u32': u32
181 "### 181 "###
182 ); 182 );
183} 183}
@@ -201,13 +201,13 @@ fn test() {
201} 201}
202"#), 202"#),
203 @r###" 203 @r###"
204 [80; 104) '{ ... }': Gen<T> 204 80..104 '{ ... }': Gen<T>
205 [90; 98) 'loop { }': ! 205 90..98 'loop { }': !
206 [95; 98) '{ }': () 206 95..98 '{ }': ()
207 [118; 146) '{ ...e(); }': () 207 118..146 '{ ...e(); }': ()
208 [128; 129) 'a': Gen<u32> 208 128..129 'a': Gen<u32>
209 [132; 141) 'Gen::make': fn make<u32>() -> Gen<u32> 209 132..141 'Gen::make': fn make<u32>() -> Gen<u32>
210 [132; 143) 'Gen::make()': Gen<u32> 210 132..143 'Gen::make()': Gen<u32>
211 "### 211 "###
212 ); 212 );
213} 213}
@@ -255,13 +255,13 @@ fn test() {
255} 255}
256"#), 256"#),
257 @r###" 257 @r###"
258 [76; 100) '{ ... }': Gen<T> 258 76..100 '{ ... }': Gen<T>
259 [86; 94) 'loop { }': ! 259 86..94 'loop { }': !
260 [91; 94) '{ }': () 260 91..94 '{ }': ()
261 [114; 149) '{ ...e(); }': () 261 114..149 '{ ...e(); }': ()
262 [124; 125) 'a': Gen<u32> 262 124..125 'a': Gen<u32>
263 [128; 144) 'Gen::<...::make': fn make<u32>() -> Gen<u32> 263 128..144 'Gen::<...::make': fn make<u32>() -> Gen<u32>
264 [128; 146) 'Gen::<...make()': Gen<u32> 264 128..146 'Gen::<...make()': Gen<u32>
265 "### 265 "###
266 ); 266 );
267} 267}
@@ -286,13 +286,13 @@ fn test() {
286} 286}
287"#), 287"#),
288 @r###" 288 @r###"
289 [102; 126) '{ ... }': Gen<u32, T> 289 102..126 '{ ... }': Gen<u32, T>
290 [112; 120) 'loop { }': ! 290 112..120 'loop { }': !
291 [117; 120) '{ }': () 291 117..120 '{ }': ()
292 [140; 180) '{ ...e(); }': () 292 140..180 '{ ...e(); }': ()
293 [150; 151) 'a': Gen<u32, u64> 293 150..151 'a': Gen<u32, u64>
294 [154; 175) 'Gen::<...::make': fn make<u64>() -> Gen<u32, u64> 294 154..175 'Gen::<...::make': fn make<u64>() -> Gen<u32, u64>
295 [154; 177) 'Gen::<...make()': Gen<u32, u64> 295 154..177 'Gen::<...make()': Gen<u32, u64>
296 "### 296 "###
297 ); 297 );
298} 298}
@@ -340,13 +340,13 @@ fn test() {
340} 340}
341"#), 341"#),
342 @r###" 342 @r###"
343 [31; 35) 'self': &Self 343 31..35 'self': &Self
344 [110; 114) 'self': &Self 344 110..114 'self': &Self
345 [170; 228) '{ ...i128 }': () 345 170..228 '{ ...i128 }': ()
346 [176; 178) 'S1': S1 346 176..178 'S1': S1
347 [176; 187) 'S1.method()': u32 347 176..187 'S1.method()': u32
348 [203; 205) 'S2': S2 348 203..205 'S2': S2
349 [203; 214) 'S2.method()': i128 349 203..214 'S2.method()': i128
350 "### 350 "###
351 ); 351 );
352} 352}
@@ -387,14 +387,14 @@ mod bar_test {
387} 387}
388"#), 388"#),
389 @r###" 389 @r###"
390 [63; 67) 'self': &Self 390 63..67 'self': &Self
391 [169; 173) 'self': &Self 391 169..173 'self': &Self
392 [300; 337) '{ ... }': () 392 300..337 '{ ... }': ()
393 [310; 311) 'S': S 393 310..311 'S': S
394 [310; 320) 'S.method()': u32 394 310..320 'S.method()': u32
395 [416; 454) '{ ... }': () 395 416..454 '{ ... }': ()
396 [426; 427) 'S': S 396 426..427 'S': S
397 [426; 436) 'S.method()': i128 397 426..436 'S.method()': i128
398 "### 398 "###
399 ); 399 );
400} 400}
@@ -414,10 +414,10 @@ fn test() {
414} 414}
415"#), 415"#),
416 @r###" 416 @r###"
417 [33; 37) 'self': &Self 417 33..37 'self': &Self
418 [92; 111) '{ ...d(); }': () 418 92..111 '{ ...d(); }': ()
419 [98; 99) 'S': S 419 98..99 'S': S
420 [98; 108) 'S.method()': u32 420 98..108 'S.method()': u32
421 "### 421 "###
422 ); 422 );
423} 423}
@@ -443,17 +443,17 @@ fn test() {
443} 443}
444"#), 444"#),
445 @r###" 445 @r###"
446 [43; 47) 'self': &Self 446 43..47 'self': &Self
447 [82; 86) 'self': &Self 447 82..86 'self': &Self
448 [210; 361) '{ ..., i8 }': () 448 210..361 '{ ..., i8 }': ()
449 [216; 218) 'S1': S1 449 216..218 'S1': S1
450 [216; 228) 'S1.method1()': (u8, u16, u32) 450 216..228 'S1.method1()': (u8, u16, u32)
451 [250; 252) 'S1': S1 451 250..252 'S1': S1
452 [250; 262) 'S1.method2()': (u32, u16, u8) 452 250..262 'S1.method2()': (u32, u16, u8)
453 [284; 286) 'S2': S2 453 284..286 'S2': S2
454 [284; 296) 'S2.method1()': (i8, i16, {unknown}) 454 284..296 'S2.method1()': (i8, i16, {unknown})
455 [324; 326) 'S2': S2 455 324..326 'S2': S2
456 [324; 336) 'S2.method2()': ({unknown}, i16, i8) 456 324..336 'S2.method2()': ({unknown}, i16, i8)
457 "### 457 "###
458 ); 458 );
459} 459}
@@ -473,12 +473,12 @@ fn test() {
473} 473}
474"#), 474"#),
475 @r###" 475 @r###"
476 [33; 37) 'self': &Self 476 33..37 'self': &Self
477 [102; 127) '{ ...d(); }': () 477 102..127 '{ ...d(); }': ()
478 [108; 109) 'S': S<u32>(u32) -> S<u32> 478 108..109 'S': S<u32>(u32) -> S<u32>
479 [108; 115) 'S(1u32)': S<u32> 479 108..115 'S(1u32)': S<u32>
480 [108; 124) 'S(1u32...thod()': u32 480 108..124 'S(1u32...thod()': u32
481 [110; 114) '1u32': u32 481 110..114 '1u32': u32
482 "### 482 "###
483 ); 483 );
484} 484}
@@ -499,16 +499,16 @@ fn test() {
499} 499}
500"#), 500"#),
501 @r###" 501 @r###"
502 [87; 193) '{ ...t(); }': () 502 87..193 '{ ...t(); }': ()
503 [97; 99) 's1': S 503 97..99 's1': S
504 [105; 121) 'Defaul...efault': fn default<S>() -> S 504 105..121 'Defaul...efault': fn default<S>() -> S
505 [105; 123) 'Defaul...ault()': S 505 105..123 'Defaul...ault()': S
506 [133; 135) 's2': S 506 133..135 's2': S
507 [138; 148) 'S::default': fn default<S>() -> S 507 138..148 'S::default': fn default<S>() -> S
508 [138; 150) 'S::default()': S 508 138..150 'S::default()': S
509 [160; 162) 's3': S 509 160..162 's3': S
510 [165; 188) '<S as ...efault': fn default<S>() -> S 510 165..188 '<S as ...efault': fn default<S>() -> S
511 [165; 190) '<S as ...ault()': S 511 165..190 '<S as ...ault()': S
512 "### 512 "###
513 ); 513 );
514} 514}
@@ -531,16 +531,16 @@ fn test() {
531} 531}
532"#), 532"#),
533 @r###" 533 @r###"
534 [127; 211) '{ ...e(); }': () 534 127..211 '{ ...e(); }': ()
535 [137; 138) 'a': u32 535 137..138 'a': u32
536 [141; 148) 'S::make': fn make<S, u32>() -> u32 536 141..148 'S::make': fn make<S, u32>() -> u32
537 [141; 150) 'S::make()': u32 537 141..150 'S::make()': u32
538 [160; 161) 'b': u64 538 160..161 'b': u64
539 [164; 178) 'G::<u64>::make': fn make<G<u64>, u64>() -> u64 539 164..178 'G::<u64>::make': fn make<G<u64>, u64>() -> u64
540 [164; 180) 'G::<u6...make()': u64 540 164..180 'G::<u6...make()': u64
541 [190; 191) 'c': f64 541 190..191 'c': f64
542 [199; 206) 'G::make': fn make<G<f64>, f64>() -> f64 542 199..206 'G::make': fn make<G<f64>, f64>() -> f64
543 [199; 208) 'G::make()': f64 543 199..208 'G::make()': f64
544 "### 544 "###
545 ); 545 );
546} 546}
@@ -565,22 +565,22 @@ fn test() {
565} 565}
566"#), 566"#),
567 @r###" 567 @r###"
568 [135; 313) '{ ...e(); }': () 568 135..313 '{ ...e(); }': ()
569 [145; 146) 'a': (u32, i64) 569 145..146 'a': (u32, i64)
570 [149; 163) 'S::make::<i64>': fn make<S, u32, i64>() -> (u32, i64) 570 149..163 'S::make::<i64>': fn make<S, u32, i64>() -> (u32, i64)
571 [149; 165) 'S::mak...i64>()': (u32, i64) 571 149..165 'S::mak...i64>()': (u32, i64)
572 [175; 176) 'b': (u32, i64) 572 175..176 'b': (u32, i64)
573 [189; 196) 'S::make': fn make<S, u32, i64>() -> (u32, i64) 573 189..196 'S::make': fn make<S, u32, i64>() -> (u32, i64)
574 [189; 198) 'S::make()': (u32, i64) 574 189..198 'S::make()': (u32, i64)
575 [208; 209) 'c': (u32, i64) 575 208..209 'c': (u32, i64)
576 [212; 233) 'G::<u3...:<i64>': fn make<G<u32>, u32, i64>() -> (u32, i64) 576 212..233 'G::<u3...:<i64>': fn make<G<u32>, u32, i64>() -> (u32, i64)
577 [212; 235) 'G::<u3...i64>()': (u32, i64) 577 212..235 'G::<u3...i64>()': (u32, i64)
578 [245; 246) 'd': (u32, i64) 578 245..246 'd': (u32, i64)
579 [259; 273) 'G::make::<i64>': fn make<G<u32>, u32, i64>() -> (u32, i64) 579 259..273 'G::make::<i64>': fn make<G<u32>, u32, i64>() -> (u32, i64)
580 [259; 275) 'G::mak...i64>()': (u32, i64) 580 259..275 'G::mak...i64>()': (u32, i64)
581 [285; 286) 'e': (u32, i64) 581 285..286 'e': (u32, i64)
582 [301; 308) 'G::make': fn make<G<u32>, u32, i64>() -> (u32, i64) 582 301..308 'G::make': fn make<G<u32>, u32, i64>() -> (u32, i64)
583 [301; 310) 'G::make()': (u32, i64) 583 301..310 'G::make()': (u32, i64)
584 "### 584 "###
585 ); 585 );
586} 586}
@@ -599,10 +599,10 @@ fn test() {
599} 599}
600"#), 600"#),
601 @r###" 601 @r###"
602 [101; 127) '{ ...e(); }': () 602 101..127 '{ ...e(); }': ()
603 [111; 112) 'a': (S<i32>, i64) 603 111..112 'a': (S<i32>, i64)
604 [115; 122) 'S::make': fn make<S<i32>, i64>() -> (S<i32>, i64) 604 115..122 'S::make': fn make<S<i32>, i64>() -> (S<i32>, i64)
605 [115; 124) 'S::make()': (S<i32>, i64) 605 115..124 'S::make()': (S<i32>, i64)
606 "### 606 "###
607 ); 607 );
608} 608}
@@ -623,13 +623,13 @@ fn test() {
623} 623}
624"#), 624"#),
625 @r###" 625 @r###"
626 [131; 203) '{ ...e(); }': () 626 131..203 '{ ...e(); }': ()
627 [141; 142) 'a': (S<u64>, i64) 627 141..142 'a': (S<u64>, i64)
628 [158; 165) 'S::make': fn make<S<u64>, i64>() -> (S<u64>, i64) 628 158..165 'S::make': fn make<S<u64>, i64>() -> (S<u64>, i64)
629 [158; 167) 'S::make()': (S<u64>, i64) 629 158..167 'S::make()': (S<u64>, i64)
630 [177; 178) 'b': (S<u32>, i32) 630 177..178 'b': (S<u32>, i32)
631 [191; 198) 'S::make': fn make<S<u32>, i32>() -> (S<u32>, i32) 631 191..198 'S::make': fn make<S<u32>, i32>() -> (S<u32>, i32)
632 [191; 200) 'S::make()': (S<u32>, i32) 632 191..200 'S::make()': (S<u32>, i32)
633 "### 633 "###
634 ); 634 );
635} 635}
@@ -649,13 +649,13 @@ fn test() {
649} 649}
650"#), 650"#),
651 @r###" 651 @r###"
652 [107; 211) '{ ...>(); }': () 652 107..211 '{ ...>(); }': ()
653 [117; 118) 'a': (S<u64>, i64, u8) 653 117..118 'a': (S<u64>, i64, u8)
654 [121; 150) '<S as ...::<u8>': fn make<S<u64>, i64, u8>() -> (S<u64>, i64, u8) 654 121..150 '<S as ...::<u8>': fn make<S<u64>, i64, u8>() -> (S<u64>, i64, u8)
655 [121; 152) '<S as ...<u8>()': (S<u64>, i64, u8) 655 121..152 '<S as ...<u8>()': (S<u64>, i64, u8)
656 [162; 163) 'b': (S<u64>, i64, u8) 656 162..163 'b': (S<u64>, i64, u8)
657 [182; 206) 'Trait:...::<u8>': fn make<S<u64>, i64, u8>() -> (S<u64>, i64, u8) 657 182..206 'Trait:...::<u8>': fn make<S<u64>, i64, u8>() -> (S<u64>, i64, u8)
658 [182; 208) 'Trait:...<u8>()': (S<u64>, i64, u8) 658 182..208 'Trait:...<u8>()': (S<u64>, i64, u8)
659 "### 659 "###
660 ); 660 );
661} 661}
@@ -672,11 +672,11 @@ fn test<T: Trait>(t: T) {
672} 672}
673"#), 673"#),
674 @r###" 674 @r###"
675 [30; 34) 'self': &Self 675 30..34 'self': &Self
676 [64; 65) 't': T 676 64..65 't': T
677 [70; 89) '{ ...d(); }': () 677 70..89 '{ ...d(); }': ()
678 [76; 77) 't': T 678 76..77 't': T
679 [76; 86) 't.method()': u32 679 76..86 't.method()': u32
680 "### 680 "###
681 ); 681 );
682} 682}
@@ -693,11 +693,11 @@ fn test<U, T: Trait<U>>(t: T) {
693} 693}
694"#), 694"#),
695 @r###" 695 @r###"
696 [33; 37) 'self': &Self 696 33..37 'self': &Self
697 [71; 72) 't': T 697 71..72 't': T
698 [77; 96) '{ ...d(); }': () 698 77..96 '{ ...d(); }': ()
699 [83; 84) 't': T 699 83..84 't': T
700 [83; 93) 't.method()': U 700 83..93 't.method()': U
701 "### 701 "###
702 ); 702 );
703} 703}
@@ -719,18 +719,18 @@ fn test() {
719} 719}
720"#), 720"#),
721 @r###" 721 @r###"
722 [29; 33) 'self': Self 722 29..33 'self': Self
723 [111; 202) '{ ...(S); }': () 723 111..202 '{ ...(S); }': ()
724 [121; 122) 'x': u32 724 121..122 'x': u32
725 [130; 131) 'S': S 725 130..131 'S': S
726 [130; 138) 'S.into()': u32 726 130..138 'S.into()': u32
727 [148; 149) 'y': u64 727 148..149 'y': u64
728 [157; 158) 'S': S 728 157..158 'S': S
729 [157; 165) 'S.into()': u64 729 157..165 'S.into()': u64
730 [175; 176) 'z': u64 730 175..176 'z': u64
731 [179; 196) 'Into::...::into': fn into<S, u64>(S) -> u64 731 179..196 'Into::...::into': fn into<S, u64>(S) -> u64
732 [179; 199) 'Into::...nto(S)': u64 732 179..199 'Into::...nto(S)': u64
733 [197; 198) 'S': S 733 197..198 'S': S
734 "### 734 "###
735 ); 735 );
736} 736}