Skip to content

Commit 4d91aff

Browse files
committed
Rust: Add path resolution test with attribute on impl block
1 parent 1f663ca commit 4d91aff

File tree

3 files changed

+116
-75
lines changed

3 files changed

+116
-75
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,27 @@ use std::{self as ztd}; // $ item=std
761761

762762
fn use_ztd(x: ztd::string::String) {} // $ item=String
763763

764+
#[rustfmt::skip]
765+
mod impl_with_attribute_macro {
766+
struct Foo; // IFoo
767+
768+
trait ATrait {
769+
type Foo;
770+
} // IATrait
771+
772+
#[proc_macro::identity] // $ item=identity
773+
impl ATrait for i64 { // $ item=IATrait item=i64
774+
type Foo =
775+
i64 // $ item=i64
776+
; // IATrait_i64_Foo
777+
}
778+
779+
pub fn test() {
780+
// This should resolve to the struct, not the associated type.
781+
let _x: Foo; // $ item=IFoo SPURIOUS: item=IATrait_i64_Foo
782+
} // impl_with_attribute_macro::test
783+
}
784+
764785
fn main() {
765786
my::nested::nested1::nested2::f(); // $ item=I4
766787
my::f(); // $ item=I38
@@ -795,4 +816,5 @@ fn main() {
795816
z_changed(); // $ item=I122
796817
AStruct::z_on_type(); // $ item=I124
797818
AStruct {}.z_on_instance(); // $ item=I123 item=I125
819+
impl_with_attribute_macro::test(); // $ item=impl_with_attribute_macro::test
798820
}

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

Lines changed: 87 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ mod
3131
| main.rs:594:1:619:1 | mod m23 |
3232
| main.rs:621:1:689:1 | mod m24 |
3333
| main.rs:706:1:758:1 | mod associated_types |
34+
| main.rs:764:1:783:1 | mod impl_with_attribute_macro |
3435
| my2/mod.rs:1:1:1:16 | mod nested2 |
3536
| my2/mod.rs:12:1:12:12 | mod my3 |
3637
| my2/mod.rs:14:1:15:10 | mod mymod |
@@ -64,7 +65,7 @@ resolvePath
6465
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
6566
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
6667
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
67-
| main.rs:40:9:40:13 | super | main.rs:1:1:798:2 | SourceFile |
68+
| main.rs:40:9:40:13 | super | main.rs:1:1:820:2 | SourceFile |
6869
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
6970
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
7071
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
@@ -76,7 +77,7 @@ resolvePath
7677
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
7778
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
7879
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
79-
| main.rs:68:5:68:8 | self | main.rs:1:1:798:2 | SourceFile |
80+
| main.rs:68:5:68:8 | self | main.rs:1:1:820:2 | SourceFile |
8081
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
8182
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
8283
| main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
@@ -91,7 +92,7 @@ resolvePath
9192
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
9293
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
9394
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
94-
| main.rs:117:13:117:17 | super | main.rs:1:1:798:2 | SourceFile |
95+
| main.rs:117:13:117:17 | super | main.rs:1:1:820:2 | SourceFile |
9596
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
9697
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
9798
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
@@ -301,12 +302,12 @@ resolvePath
301302
| main.rs:687:9:687:47 | ...::call_both | main.rs:653:9:656:9 | fn call_both |
302303
| main.rs:687:25:687:35 | Implementor | main.rs:659:5:659:23 | struct Implementor |
303304
| main.rs:693:3:693:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
304-
| main.rs:693:3:693:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
305+
| main.rs:693:3:693:24 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix |
305306
| main.rs:697:6:697:12 | AStruct | main.rs:696:1:696:17 | struct AStruct |
306307
| main.rs:699:7:699:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
307-
| main.rs:699:7:699:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
308+
| main.rs:699:7:699:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix |
308309
| main.rs:702:7:702:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
309-
| main.rs:702:7:702:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
310+
| main.rs:702:7:702:28 | ...::add_suffix | proc_macro.rs:4:1:13:1 | fn add_suffix |
310311
| main.rs:707:9:707:11 | std | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
311312
| main.rs:707:9:707:19 | ...::marker | {EXTERNAL LOCATION} | mod marker |
312313
| main.rs:707:9:707:32 | ...::PhantomData | {EXTERNAL LOCATION} | struct PhantomData |
@@ -347,73 +348,82 @@ resolvePath
347348
| main.rs:762:15:762:17 | ztd | {EXTERNAL LOCATION} | Crate(std@0.0.0) |
348349
| main.rs:762:15:762:25 | ...::string | {EXTERNAL LOCATION} | mod string |
349350
| main.rs:762:15:762:33 | ...::String | {EXTERNAL LOCATION} | struct String |
350-
| main.rs:765:5:765:6 | my | main.rs:1:1:1:7 | mod my |
351-
| main.rs:765:5:765:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
352-
| main.rs:765:5:765:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
353-
| main.rs:765:5:765:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
354-
| main.rs:765:5:765:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
355-
| main.rs:766:5:766:6 | my | main.rs:1:1:1:7 | mod my |
356-
| main.rs:766:5:766:9 | ...::f | my.rs:5:1:7:1 | fn f |
357-
| main.rs:767:5:767:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
358-
| main.rs:767:5:767:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
359-
| main.rs:767:5:767:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
360-
| main.rs:767:5:767:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
361-
| main.rs:768:5:768:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
362-
| main.rs:769:5:769:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
363-
| main.rs:770:5:770:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
364-
| main.rs:770:5:770:12 | ...::h | main.rs:50:1:69:1 | fn h |
365-
| main.rs:771:5:771:6 | m1 | main.rs:13:1:37:1 | mod m1 |
366-
| main.rs:771:5:771:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
367-
| main.rs:771:5:771:13 | ...::g | main.rs:23:9:27:9 | fn g |
368-
| main.rs:772:5:772:6 | m1 | main.rs:13:1:37:1 | mod m1 |
369-
| main.rs:772:5:772:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
370-
| main.rs:772:5:772:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
371-
| main.rs:772:5:772:17 | ...::h | main.rs:30:27:34:13 | fn h |
372-
| main.rs:773:5:773:6 | m4 | main.rs:39:1:46:1 | mod m4 |
373-
| main.rs:773:5:773:9 | ...::i | main.rs:42:5:45:5 | fn i |
374-
| main.rs:774:5:774:5 | h | main.rs:50:1:69:1 | fn h |
375-
| main.rs:775:5:775:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
376-
| main.rs:776:5:776:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
377-
| main.rs:777:5:777:5 | j | main.rs:97:1:101:1 | fn j |
378-
| main.rs:778:5:778:6 | m6 | main.rs:109:1:120:1 | mod m6 |
379-
| main.rs:778:5:778:9 | ...::g | main.rs:114:5:119:5 | fn g |
380-
| main.rs:779:5:779:6 | m7 | main.rs:122:1:141:1 | mod m7 |
381-
| main.rs:779:5:779:9 | ...::f | main.rs:133:5:140:5 | fn f |
382-
| main.rs:780:5:780:6 | m8 | main.rs:143:1:197:1 | mod m8 |
383-
| main.rs:780:5:780:9 | ...::g | main.rs:181:5:196:5 | fn g |
384-
| main.rs:781:5:781:6 | m9 | main.rs:199:1:207:1 | mod m9 |
385-
| main.rs:781:5:781:9 | ...::f | main.rs:202:5:206:5 | fn f |
386-
| main.rs:782:5:782:7 | m11 | main.rs:230:1:267:1 | mod m11 |
387-
| main.rs:782:5:782:10 | ...::f | main.rs:235:5:238:5 | fn f |
388-
| main.rs:783:5:783:7 | m15 | main.rs:298:1:367:1 | mod m15 |
389-
| main.rs:783:5:783:10 | ...::f | main.rs:354:5:366:5 | fn f |
390-
| main.rs:784:5:784:7 | m16 | main.rs:369:1:461:1 | mod m16 |
391-
| main.rs:784:5:784:10 | ...::f | main.rs:436:5:460:5 | fn f |
392-
| main.rs:785:5:785:20 | trait_visibility | main.rs:463:1:513:1 | mod trait_visibility |
393-
| main.rs:785:5:785:23 | ...::f | main.rs:490:5:512:5 | fn f |
394-
| main.rs:786:5:786:7 | m17 | main.rs:515:1:545:1 | mod m17 |
395-
| main.rs:786:5:786:10 | ...::f | main.rs:539:5:544:5 | fn f |
396-
| main.rs:787:5:787:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
397-
| main.rs:787:5:787:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
398-
| main.rs:788:5:788:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
399-
| main.rs:788:5:788:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
400-
| main.rs:789:5:789:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
401-
| main.rs:789:5:789:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
402-
| main.rs:790:5:790:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
403-
| main.rs:791:5:791:7 | m18 | main.rs:547:1:565:1 | mod m18 |
404-
| main.rs:791:5:791:12 | ...::m19 | main.rs:552:5:564:5 | mod m19 |
405-
| main.rs:791:5:791:17 | ...::m20 | main.rs:557:9:563:9 | mod m20 |
406-
| main.rs:791:5:791:20 | ...::g | main.rs:558:13:562:13 | fn g |
407-
| main.rs:792:5:792:7 | m23 | main.rs:594:1:619:1 | mod m23 |
408-
| main.rs:792:5:792:10 | ...::f | main.rs:614:5:618:5 | fn f |
409-
| main.rs:793:5:793:7 | m24 | main.rs:621:1:689:1 | mod m24 |
410-
| main.rs:793:5:793:10 | ...::f | main.rs:675:5:688:5 | fn f |
411-
| main.rs:794:5:794:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
412-
| main.rs:794:5:794:11 | ...::h | main.rs:50:1:69:1 | fn h |
413-
| main.rs:795:5:795:13 | z_changed | main.rs:694:1:694:8 | fn z_changed |
414-
| main.rs:796:5:796:11 | AStruct | main.rs:696:1:696:17 | struct AStruct |
415-
| main.rs:796:5:796:22 | ...::z_on_type | main.rs:700:5:700:16 | fn z_on_type |
416-
| main.rs:797:5:797:11 | AStruct | main.rs:696:1:696:17 | struct AStruct |
351+
| main.rs:772:7:772:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.0.1) |
352+
| main.rs:772:7:772:26 | ...::identity | proc_macro.rs:15:1:18:1 | fn identity |
353+
| main.rs:773:10:773:15 | ATrait | main.rs:768:5:770:5 | trait ATrait |
354+
| main.rs:773:21:773:23 | i64 | {EXTERNAL LOCATION} | struct i64 |
355+
| main.rs:775:11:775:13 | i64 | {EXTERNAL LOCATION} | struct i64 |
356+
| main.rs:781:17:781:19 | Foo | main.rs:766:5:766:15 | struct Foo |
357+
| main.rs:781:17:781:19 | Foo | main.rs:773:27:776:9 | type Foo |
358+
| main.rs:786:5:786:6 | my | main.rs:1:1:1:7 | mod my |
359+
| main.rs:786:5:786:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
360+
| main.rs:786:5:786:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
361+
| main.rs:786:5:786:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
362+
| main.rs:786:5:786:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
363+
| main.rs:787:5:787:6 | my | main.rs:1:1:1:7 | mod my |
364+
| main.rs:787:5:787:9 | ...::f | my.rs:5:1:7:1 | fn f |
365+
| main.rs:788:5:788:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
366+
| main.rs:788:5:788:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
367+
| main.rs:788:5:788:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
368+
| main.rs:788:5:788:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
369+
| main.rs:789:5:789:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
370+
| main.rs:790:5:790:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
371+
| main.rs:791:5:791:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
372+
| main.rs:791:5:791:12 | ...::h | main.rs:50:1:69:1 | fn h |
373+
| main.rs:792:5:792:6 | m1 | main.rs:13:1:37:1 | mod m1 |
374+
| main.rs:792:5:792:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
375+
| main.rs:792:5:792:13 | ...::g | main.rs:23:9:27:9 | fn g |
376+
| main.rs:793:5:793:6 | m1 | main.rs:13:1:37:1 | mod m1 |
377+
| main.rs:793:5:793:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
378+
| main.rs:793:5:793:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
379+
| main.rs:793:5:793:17 | ...::h | main.rs:30:27:34:13 | fn h |
380+
| main.rs:794:5:794:6 | m4 | main.rs:39:1:46:1 | mod m4 |
381+
| main.rs:794:5:794:9 | ...::i | main.rs:42:5:45:5 | fn i |
382+
| main.rs:795:5:795:5 | h | main.rs:50:1:69:1 | fn h |
383+
| main.rs:796:5:796:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
384+
| main.rs:797:5:797:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
385+
| main.rs:798:5:798:5 | j | main.rs:97:1:101:1 | fn j |
386+
| main.rs:799:5:799:6 | m6 | main.rs:109:1:120:1 | mod m6 |
387+
| main.rs:799:5:799:9 | ...::g | main.rs:114:5:119:5 | fn g |
388+
| main.rs:800:5:800:6 | m7 | main.rs:122:1:141:1 | mod m7 |
389+
| main.rs:800:5:800:9 | ...::f | main.rs:133:5:140:5 | fn f |
390+
| main.rs:801:5:801:6 | m8 | main.rs:143:1:197:1 | mod m8 |
391+
| main.rs:801:5:801:9 | ...::g | main.rs:181:5:196:5 | fn g |
392+
| main.rs:802:5:802:6 | m9 | main.rs:199:1:207:1 | mod m9 |
393+
| main.rs:802:5:802:9 | ...::f | main.rs:202:5:206:5 | fn f |
394+
| main.rs:803:5:803:7 | m11 | main.rs:230:1:267:1 | mod m11 |
395+
| main.rs:803:5:803:10 | ...::f | main.rs:235:5:238:5 | fn f |
396+
| main.rs:804:5:804:7 | m15 | main.rs:298:1:367:1 | mod m15 |
397+
| main.rs:804:5:804:10 | ...::f | main.rs:354:5:366:5 | fn f |
398+
| main.rs:805:5:805:7 | m16 | main.rs:369:1:461:1 | mod m16 |
399+
| main.rs:805:5:805:10 | ...::f | main.rs:436:5:460:5 | fn f |
400+
| main.rs:806:5:806:20 | trait_visibility | main.rs:463:1:513:1 | mod trait_visibility |
401+
| main.rs:806:5:806:23 | ...::f | main.rs:490:5:512:5 | fn f |
402+
| main.rs:807:5:807:7 | m17 | main.rs:515:1:545:1 | mod m17 |
403+
| main.rs:807:5:807:10 | ...::f | main.rs:539:5:544:5 | fn f |
404+
| main.rs:808:5:808:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
405+
| main.rs:808:5:808:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
406+
| main.rs:809:5:809:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
407+
| main.rs:809:5:809:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
408+
| main.rs:810:5:810:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
409+
| main.rs:810:5:810:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
410+
| main.rs:811:5:811:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
411+
| main.rs:812:5:812:7 | m18 | main.rs:547:1:565:1 | mod m18 |
412+
| main.rs:812:5:812:12 | ...::m19 | main.rs:552:5:564:5 | mod m19 |
413+
| main.rs:812:5:812:17 | ...::m20 | main.rs:557:9:563:9 | mod m20 |
414+
| main.rs:812:5:812:20 | ...::g | main.rs:558:13:562:13 | fn g |
415+
| main.rs:813:5:813:7 | m23 | main.rs:594:1:619:1 | mod m23 |
416+
| main.rs:813:5:813:10 | ...::f | main.rs:614:5:618:5 | fn f |
417+
| main.rs:814:5:814:7 | m24 | main.rs:621:1:689:1 | mod m24 |
418+
| main.rs:814:5:814:10 | ...::f | main.rs:675:5:688:5 | fn f |
419+
| main.rs:815:5:815:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
420+
| main.rs:815:5:815:11 | ...::h | main.rs:50:1:69:1 | fn h |
421+
| main.rs:816:5:816:13 | z_changed | main.rs:694:1:694:8 | fn z_changed |
422+
| main.rs:817:5:817:11 | AStruct | main.rs:696:1:696:17 | struct AStruct |
423+
| main.rs:817:5:817:22 | ...::z_on_type | main.rs:700:5:700:16 | fn z_on_type |
424+
| main.rs:818:5:818:11 | AStruct | main.rs:696:1:696:17 | struct AStruct |
425+
| main.rs:819:5:819:29 | impl_with_attribute_macro | main.rs:764:1:783:1 | mod impl_with_attribute_macro |
426+
| main.rs:819:5:819:35 | ...::test | main.rs:779:5:782:5 | fn test |
417427
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
418428
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
419429
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -429,7 +439,7 @@ resolvePath
429439
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
430440
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h |
431441
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
432-
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:798:2 | SourceFile |
442+
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:820:2 | SourceFile |
433443
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h |
434444
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
435445
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
@@ -473,4 +483,7 @@ resolvePath
473483
| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
474484
| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident |
475485
| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new |
486+
| proc_macro.rs:16:24:16:34 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
487+
| proc_macro.rs:16:43:16:53 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
488+
| proc_macro.rs:16:59:16:69 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
476489
testFailures

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,11 @@ pub fn add_suffix(attr: TokenStream, item: TokenStream) -> TokenStream {
88
ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, suff), ast.sig.ident.span());
99
quote! {
1010
#ast
11-
}.into()
11+
}
12+
.into()
13+
}
14+
15+
#[proc_macro_attribute]
16+
pub fn identity(_attr: TokenStream, item: TokenStream) -> TokenStream {
17+
item
1218
}

0 commit comments

Comments
 (0)