Skip to content

Commit 3bfb4fb

Browse files
committed
Rust: More path resolution tests
1 parent 68f6f9f commit 3bfb4fb

File tree

2 files changed

+97
-59
lines changed

2 files changed

+97
-59
lines changed

rust/ql/test/library-tests/path-resolution/main.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -493,6 +493,33 @@ mod m18 {
493493
}
494494
}
495495

496+
mod m21 {
497+
mod m22 {
498+
pub enum MyEnum {
499+
A, // I104
500+
} // I105
501+
502+
pub struct MyStruct; // I106
503+
} // I107
504+
505+
mod m33 {
506+
#[rustfmt::skip]
507+
use super::m22::MyEnum::{ // $ item=I105
508+
self // $ MISSING: item=I105 $ SPURIOUS: item=I107
509+
};
510+
511+
#[rustfmt::skip]
512+
use super::m22::MyStruct::{ // $ item=I106
513+
self // $ MISSING: item=I106 $ SPURIOUS: item=I107
514+
};
515+
516+
fn f() {
517+
let _ = MyEnum::A; // $ MISSING: item=I104
518+
let _ = MyStruct {}; // $ MISSING: item=I106
519+
}
520+
}
521+
}
522+
496523
fn main() {
497524
my::nested::nested1::nested2::f(); // $ item=I4
498525
my::f(); // $ item=I38

rust/ql/test/library-tests/path-resolution/path-resolution.expected

Lines changed: 70 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ mod
2424
| main.rs:476:1:494:1 | mod m18 |
2525
| main.rs:481:5:493:5 | mod m19 |
2626
| main.rs:486:9:492:9 | mod m20 |
27+
| main.rs:496:1:521:1 | mod m21 |
28+
| main.rs:497:5:503:5 | mod m22 |
29+
| main.rs:505:5:520:5 | mod m33 |
2730
| my2/mod.rs:1:1:1:16 | mod nested2 |
2831
| my2/mod.rs:12:1:12:12 | mod my3 |
2932
| my2/nested2.rs:1:1:11:1 | mod nested3 |
@@ -56,7 +59,7 @@ resolvePath
5659
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
5760
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
5861
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
59-
| main.rs:40:9:40:13 | super | main.rs:1:1:523:2 | SourceFile |
62+
| main.rs:40:9:40:13 | super | main.rs:1:1:550:2 | SourceFile |
6063
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
6164
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
6265
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
@@ -68,7 +71,7 @@ resolvePath
6871
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
6972
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
7073
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
71-
| main.rs:68:5:68:8 | self | main.rs:1:1:523:2 | SourceFile |
74+
| main.rs:68:5:68:8 | self | main.rs:1:1:550:2 | SourceFile |
7275
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
7376
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
7477
| main.rs:81:17:81:19 | Foo | main.rs:77:9:79:9 | struct Foo |
@@ -82,7 +85,7 @@ resolvePath
8285
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
8386
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
8487
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
85-
| main.rs:117:13:117:17 | super | main.rs:1:1:523:2 | SourceFile |
88+
| main.rs:117:13:117:17 | super | main.rs:1:1:550:2 | SourceFile |
8689
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
8790
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
8891
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
@@ -220,61 +223,69 @@ resolvePath
220223
| main.rs:490:17:490:21 | super | main.rs:481:5:493:5 | mod m19 |
221224
| main.rs:490:17:490:28 | ...::super | main.rs:476:1:494:1 | mod m18 |
222225
| main.rs:490:17:490:31 | ...::f | main.rs:477:5:479:5 | fn f |
223-
| main.rs:497:5:497:6 | my | main.rs:1:1:1:7 | mod my |
224-
| main.rs:497:5:497:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
225-
| main.rs:497:5:497:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
226-
| main.rs:497:5:497:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
227-
| main.rs:497:5:497:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
228-
| main.rs:498:5:498:6 | my | main.rs:1:1:1:7 | mod my |
229-
| main.rs:498:5:498:9 | ...::f | my.rs:5:1:7:1 | fn f |
230-
| main.rs:499:5:499:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
231-
| main.rs:499:5:499:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
232-
| main.rs:499:5:499:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
233-
| main.rs:499:5:499:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
234-
| main.rs:500:5:500:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
235-
| main.rs:501:5:501:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
236-
| main.rs:502:5:502:9 | crate | main.rs:0:0:0:0 | Crate([email protected]) |
237-
| main.rs:502:5:502:12 | ...::h | main.rs:50:1:69:1 | fn h |
238-
| main.rs:503:5:503:6 | m1 | main.rs:13:1:37:1 | mod m1 |
239-
| main.rs:503:5:503:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
240-
| main.rs:503:5:503:13 | ...::g | main.rs:23:9:27:9 | fn g |
241-
| main.rs:504:5:504:6 | m1 | main.rs:13:1:37:1 | mod m1 |
242-
| main.rs:504:5:504:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
243-
| main.rs:504:5:504:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
244-
| main.rs:504:5:504:17 | ...::h | main.rs:30:27:34:13 | fn h |
245-
| main.rs:505:5:505:6 | m4 | main.rs:39:1:46:1 | mod m4 |
246-
| main.rs:505:5:505:9 | ...::i | main.rs:42:5:45:5 | fn i |
247-
| main.rs:506:5:506:5 | h | main.rs:50:1:69:1 | fn h |
248-
| main.rs:507:5:507:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
249-
| main.rs:508:5:508:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
250-
| main.rs:509:5:509:5 | j | main.rs:97:1:101:1 | fn j |
251-
| main.rs:510:5:510:6 | m6 | main.rs:109:1:120:1 | mod m6 |
252-
| main.rs:510:5:510:9 | ...::g | main.rs:114:5:119:5 | fn g |
253-
| main.rs:511:5:511:6 | m7 | main.rs:122:1:137:1 | mod m7 |
254-
| main.rs:511:5:511:9 | ...::f | main.rs:129:5:136:5 | fn f |
255-
| main.rs:512:5:512:6 | m8 | main.rs:139:1:193:1 | mod m8 |
256-
| main.rs:512:5:512:9 | ...::g | main.rs:177:5:192:5 | fn g |
257-
| main.rs:513:5:513:6 | m9 | main.rs:195:1:203:1 | mod m9 |
258-
| main.rs:513:5:513:9 | ...::f | main.rs:198:5:202:5 | fn f |
259-
| main.rs:514:5:514:7 | m11 | main.rs:226:1:263:1 | mod m11 |
260-
| main.rs:514:5:514:10 | ...::f | main.rs:231:5:234:5 | fn f |
261-
| main.rs:515:5:515:7 | m15 | main.rs:294:1:348:1 | mod m15 |
262-
| main.rs:515:5:515:10 | ...::f | main.rs:335:5:347:5 | fn f |
263-
| main.rs:516:5:516:7 | m16 | main.rs:350:1:442:1 | mod m16 |
264-
| main.rs:516:5:516:10 | ...::f | main.rs:417:5:441:5 | fn f |
265-
| main.rs:517:5:517:7 | m17 | main.rs:444:1:474:1 | mod m17 |
266-
| main.rs:517:5:517:10 | ...::f | main.rs:468:5:473:5 | fn f |
267-
| main.rs:518:5:518:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
268-
| main.rs:518:5:518:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
269-
| main.rs:519:5:519:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
270-
| main.rs:519:5:519:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
271-
| main.rs:520:5:520:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
272-
| main.rs:520:5:520:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
273-
| main.rs:521:5:521:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
274-
| main.rs:522:5:522:7 | m18 | main.rs:476:1:494:1 | mod m18 |
275-
| main.rs:522:5:522:12 | ...::m19 | main.rs:481:5:493:5 | mod m19 |
276-
| main.rs:522:5:522:17 | ...::m20 | main.rs:486:9:492:9 | mod m20 |
277-
| main.rs:522:5:522:20 | ...::g | main.rs:487:13:491:13 | fn g |
226+
| main.rs:507:13:507:17 | super | main.rs:496:1:521:1 | mod m21 |
227+
| main.rs:507:13:507:22 | ...::m22 | main.rs:497:5:503:5 | mod m22 |
228+
| main.rs:507:13:507:30 | ...::MyEnum | main.rs:498:9:500:9 | enum MyEnum |
229+
| main.rs:508:13:508:16 | self | main.rs:497:5:503:5 | mod m22 |
230+
| main.rs:512:13:512:17 | super | main.rs:496:1:521:1 | mod m21 |
231+
| main.rs:512:13:512:22 | ...::m22 | main.rs:497:5:503:5 | mod m22 |
232+
| main.rs:512:13:512:32 | ...::MyStruct | main.rs:502:9:502:28 | struct MyStruct |
233+
| main.rs:513:13:513:16 | self | main.rs:497:5:503:5 | mod m22 |
234+
| main.rs:524:5:524:6 | my | main.rs:1:1:1:7 | mod my |
235+
| main.rs:524:5:524:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
236+
| main.rs:524:5:524:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
237+
| main.rs:524:5:524:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
238+
| main.rs:524:5:524:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
239+
| main.rs:525:5:525:6 | my | main.rs:1:1:1:7 | mod my |
240+
| main.rs:525:5:525:9 | ...::f | my.rs:5:1:7:1 | fn f |
241+
| main.rs:526:5:526:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
242+
| main.rs:526:5:526:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
243+
| main.rs:526:5:526:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
244+
| main.rs:526:5:526:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
245+
| main.rs:527:5:527:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
246+
| main.rs:528:5:528:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
247+
| main.rs:529:5:529:9 | crate | main.rs:0:0:0:0 | Crate([email protected]) |
248+
| main.rs:529:5:529:12 | ...::h | main.rs:50:1:69:1 | fn h |
249+
| main.rs:530:5:530:6 | m1 | main.rs:13:1:37:1 | mod m1 |
250+
| main.rs:530:5:530:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
251+
| main.rs:530:5:530:13 | ...::g | main.rs:23:9:27:9 | fn g |
252+
| main.rs:531:5:531:6 | m1 | main.rs:13:1:37:1 | mod m1 |
253+
| main.rs:531:5:531:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
254+
| main.rs:531:5:531:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
255+
| main.rs:531:5:531:17 | ...::h | main.rs:30:27:34:13 | fn h |
256+
| main.rs:532:5:532:6 | m4 | main.rs:39:1:46:1 | mod m4 |
257+
| main.rs:532:5:532:9 | ...::i | main.rs:42:5:45:5 | fn i |
258+
| main.rs:533:5:533:5 | h | main.rs:50:1:69:1 | fn h |
259+
| main.rs:534:5:534:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
260+
| main.rs:535:5:535:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
261+
| main.rs:536:5:536:5 | j | main.rs:97:1:101:1 | fn j |
262+
| main.rs:537:5:537:6 | m6 | main.rs:109:1:120:1 | mod m6 |
263+
| main.rs:537:5:537:9 | ...::g | main.rs:114:5:119:5 | fn g |
264+
| main.rs:538:5:538:6 | m7 | main.rs:122:1:137:1 | mod m7 |
265+
| main.rs:538:5:538:9 | ...::f | main.rs:129:5:136:5 | fn f |
266+
| main.rs:539:5:539:6 | m8 | main.rs:139:1:193:1 | mod m8 |
267+
| main.rs:539:5:539:9 | ...::g | main.rs:177:5:192:5 | fn g |
268+
| main.rs:540:5:540:6 | m9 | main.rs:195:1:203:1 | mod m9 |
269+
| main.rs:540:5:540:9 | ...::f | main.rs:198:5:202:5 | fn f |
270+
| main.rs:541:5:541:7 | m11 | main.rs:226:1:263:1 | mod m11 |
271+
| main.rs:541:5:541:10 | ...::f | main.rs:231:5:234:5 | fn f |
272+
| main.rs:542:5:542:7 | m15 | main.rs:294:1:348:1 | mod m15 |
273+
| main.rs:542:5:542:10 | ...::f | main.rs:335:5:347:5 | fn f |
274+
| main.rs:543:5:543:7 | m16 | main.rs:350:1:442:1 | mod m16 |
275+
| main.rs:543:5:543:10 | ...::f | main.rs:417:5:441:5 | fn f |
276+
| main.rs:544:5:544:7 | m17 | main.rs:444:1:474:1 | mod m17 |
277+
| main.rs:544:5:544:10 | ...::f | main.rs:468:5:473:5 | fn f |
278+
| main.rs:545:5:545:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
279+
| main.rs:545:5:545:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
280+
| main.rs:546:5:546:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
281+
| main.rs:546:5:546:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
282+
| main.rs:547:5:547:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
283+
| main.rs:547:5:547:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
284+
| main.rs:548:5:548:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
285+
| main.rs:549:5:549:7 | m18 | main.rs:476:1:494:1 | mod m18 |
286+
| main.rs:549:5:549:12 | ...::m19 | main.rs:481:5:493:5 | mod m19 |
287+
| main.rs:549:5:549:17 | ...::m20 | main.rs:486:9:492:9 | mod m20 |
288+
| main.rs:549:5:549:20 | ...::g | main.rs:487:13:491:13 | fn g |
278289
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
279290
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
280291
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -288,7 +299,7 @@ resolvePath
288299
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
289300
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h |
290301
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:12:13 | SourceFile |
291-
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:523:2 | SourceFile |
302+
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:550:2 | SourceFile |
292303
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h |
293304
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:12:13 | SourceFile |
294305
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |

0 commit comments

Comments
 (0)