mirror of
https://github.com/github/codeql.git
synced 2025-12-16 16:53:25 +01:00
Rust: add attribute macro expansion to path resolution test
This commit is contained in:
@@ -37,6 +37,7 @@ private module ResolveTest implements TestSig {
|
||||
not n = any(Path parent).getQualifier() and
|
||||
location = n.getLocation() and
|
||||
n.fromSource() and
|
||||
not location.getFile().getAbsolutePath().matches("%proc_macro.rs") and
|
||||
not n.isFromMacroExpansion() and
|
||||
element = n.toString() and
|
||||
tag = "item"
|
||||
|
||||
@@ -2,6 +2,52 @@
|
||||
# It is not intended for manual editing.
|
||||
version = 4
|
||||
|
||||
[[package]]
|
||||
name = "proc-macro2"
|
||||
version = "1.0.95"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778"
|
||||
dependencies = [
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "proc_macro"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quote"
|
||||
version = "1.0.40"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "2.0.103"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"unicode-ident",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "test"
|
||||
version = "0.0.1"
|
||||
dependencies = [
|
||||
"proc_macro",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "unicode-ident"
|
||||
version = "1.0.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"
|
||||
|
||||
@@ -623,6 +623,18 @@ mod m24 {
|
||||
|
||||
extern crate self as zelf;
|
||||
|
||||
#[proc_macro::add_suffix("changed")] // $ item=add_suffix
|
||||
fn z() {} // I122
|
||||
|
||||
struct AStruct {} //I123
|
||||
impl AStruct { // $ item=I123
|
||||
#[proc_macro::add_suffix("on_type")] // $ item=add_suffix
|
||||
pub fn z() {} // I124
|
||||
|
||||
#[proc_macro::add_suffix("on_instance")] // $ item=add_suffix
|
||||
pub fn z(&self) {} // I125
|
||||
}
|
||||
|
||||
fn main() {
|
||||
my::nested::nested1::nested2::f(); // $ item=I4
|
||||
my::f(); // $ item=I38
|
||||
@@ -653,4 +665,8 @@ fn main() {
|
||||
m23::f(); // $ item=I108
|
||||
m24::f(); // $ item=I121
|
||||
zelf::h(); // $ item=I25
|
||||
z_changed(); // $ MISSING: item=I122
|
||||
AStruct::z_on_type(); // $ MISSING: item=I124
|
||||
AStruct{} // $ item=I123
|
||||
.z_on_instance(); // MISSING: item=I125
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ resolvePath
|
||||
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
|
||||
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
|
||||
| main.rs:40:9:40:13 | super | main.rs:1:1:656:2 | SourceFile |
|
||||
| main.rs:40:9:40:13 | super | main.rs:1:1:672:2 | SourceFile |
|
||||
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
@@ -73,7 +73,7 @@ resolvePath
|
||||
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
|
||||
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
|
||||
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
|
||||
| main.rs:68:5:68:8 | self | main.rs:1:1:656:2 | SourceFile |
|
||||
| main.rs:68:5:68:8 | self | main.rs:1:1:672:2 | SourceFile |
|
||||
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
|
||||
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
|
||||
| main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
|
||||
@@ -88,7 +88,7 @@ resolvePath
|
||||
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
|
||||
| main.rs:117:13:117:17 | super | main.rs:1:1:656:2 | SourceFile |
|
||||
| main.rs:117:13:117:17 | super | main.rs:1:1:672:2 | SourceFile |
|
||||
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
|
||||
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
|
||||
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
|
||||
@@ -266,67 +266,79 @@ resolvePath
|
||||
| main.rs:620:9:620:36 | GenericStruct::<...> | main.rs:563:5:566:5 | struct GenericStruct |
|
||||
| main.rs:620:9:620:47 | ...::call_both | main.rs:586:9:589:9 | fn call_both |
|
||||
| main.rs:620:25:620:35 | Implementor | main.rs:592:5:592:23 | struct Implementor |
|
||||
| main.rs:627:5:627:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:627:5:627:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
|
||||
| main.rs:627:5:627:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
|
||||
| main.rs:627:5:627:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
|
||||
| main.rs:627:5:627:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
|
||||
| main.rs:628:5:628:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:628:5:628:9 | ...::f | my.rs:5:1:7:1 | fn f |
|
||||
| main.rs:629:5:629:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| main.rs:629:5:629:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| main.rs:629:5:629:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:629:5:629:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:630:5:630:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:631:5:631:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:632:5:632:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
|
||||
| main.rs:632:5:632:12 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:633:5:633:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:633:5:633:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:633:5:633:13 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
| main.rs:634:5:634:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:634:5:634:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:634:5:634:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
|
||||
| main.rs:634:5:634:17 | ...::h | main.rs:30:27:34:13 | fn h |
|
||||
| main.rs:635:5:635:6 | m4 | main.rs:39:1:46:1 | mod m4 |
|
||||
| main.rs:635:5:635:9 | ...::i | main.rs:42:5:45:5 | fn i |
|
||||
| main.rs:636:5:636:5 | h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:637:5:637:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:638:5:638:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:639:5:639:5 | j | main.rs:97:1:101:1 | fn j |
|
||||
| main.rs:640:5:640:6 | m6 | main.rs:109:1:120:1 | mod m6 |
|
||||
| main.rs:640:5:640:9 | ...::g | main.rs:114:5:119:5 | fn g |
|
||||
| main.rs:641:5:641:6 | m7 | main.rs:122:1:141:1 | mod m7 |
|
||||
| main.rs:641:5:641:9 | ...::f | main.rs:133:5:140:5 | fn f |
|
||||
| main.rs:642:5:642:6 | m8 | main.rs:143:1:197:1 | mod m8 |
|
||||
| main.rs:642:5:642:9 | ...::g | main.rs:181:5:196:5 | fn g |
|
||||
| main.rs:643:5:643:6 | m9 | main.rs:199:1:207:1 | mod m9 |
|
||||
| main.rs:643:5:643:9 | ...::f | main.rs:202:5:206:5 | fn f |
|
||||
| main.rs:644:5:644:7 | m11 | main.rs:230:1:267:1 | mod m11 |
|
||||
| main.rs:644:5:644:10 | ...::f | main.rs:235:5:238:5 | fn f |
|
||||
| main.rs:645:5:645:7 | m15 | main.rs:298:1:352:1 | mod m15 |
|
||||
| main.rs:645:5:645:10 | ...::f | main.rs:339:5:351:5 | fn f |
|
||||
| main.rs:646:5:646:7 | m16 | main.rs:354:1:446:1 | mod m16 |
|
||||
| main.rs:646:5:646:10 | ...::f | main.rs:421:5:445:5 | fn f |
|
||||
| main.rs:647:5:647:7 | m17 | main.rs:448:1:478:1 | mod m17 |
|
||||
| main.rs:647:5:647:10 | ...::f | main.rs:472:5:477:5 | fn f |
|
||||
| main.rs:648:5:648:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
|
||||
| main.rs:648:5:648:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
|
||||
| main.rs:649:5:649:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
|
||||
| main.rs:649:5:649:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
|
||||
| main.rs:650:5:650:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
|
||||
| main.rs:650:5:650:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
|
||||
| main.rs:651:5:651:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
|
||||
| main.rs:652:5:652:7 | m18 | main.rs:480:1:498:1 | mod m18 |
|
||||
| main.rs:652:5:652:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
|
||||
| main.rs:652:5:652:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
|
||||
| main.rs:652:5:652:20 | ...::g | main.rs:491:13:495:13 | fn g |
|
||||
| main.rs:653:5:653:7 | m23 | main.rs:527:1:552:1 | mod m23 |
|
||||
| main.rs:653:5:653:10 | ...::f | main.rs:547:5:551:5 | fn f |
|
||||
| main.rs:654:5:654:7 | m24 | main.rs:554:1:622:1 | mod m24 |
|
||||
| main.rs:654:5:654:10 | ...::f | main.rs:608:5:621:5 | fn f |
|
||||
| main.rs:655:5:655:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
|
||||
| main.rs:655:5:655:11 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:626:3:626:12 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
|
||||
| main.rs:626:3:626:12 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) |
|
||||
| main.rs:626:3:626:24 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
|
||||
| main.rs:630:6:630:12 | AStruct | main.rs:629:1:629:17 | struct AStruct |
|
||||
| main.rs:631:7:631:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
|
||||
| main.rs:631:7:631:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) |
|
||||
| main.rs:631:7:631:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
|
||||
| main.rs:634:7:634:16 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
|
||||
| main.rs:634:7:634:16 | proc_macro | proc_macro.rs:0:0:0:0 | Crate(proc_macro@0.1.0) |
|
||||
| main.rs:634:7:634:28 | ...::add_suffix | proc_macro.rs:4:1:12:1 | fn add_suffix |
|
||||
| main.rs:639:5:639:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:639:5:639:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
|
||||
| main.rs:639:5:639:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
|
||||
| main.rs:639:5:639:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
|
||||
| main.rs:639:5:639:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
|
||||
| main.rs:640:5:640:6 | my | main.rs:1:1:1:7 | mod my |
|
||||
| main.rs:640:5:640:9 | ...::f | my.rs:5:1:7:1 | fn f |
|
||||
| main.rs:641:5:641:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| main.rs:641:5:641:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| main.rs:641:5:641:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
| main.rs:641:5:641:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:642:5:642:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:643:5:643:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:644:5:644:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
|
||||
| main.rs:644:5:644:12 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:645:5:645:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:645:5:645:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:645:5:645:13 | ...::g | main.rs:23:9:27:9 | fn g |
|
||||
| main.rs:646:5:646:6 | m1 | main.rs:13:1:37:1 | mod m1 |
|
||||
| main.rs:646:5:646:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
|
||||
| main.rs:646:5:646:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
|
||||
| main.rs:646:5:646:17 | ...::h | main.rs:30:27:34:13 | fn h |
|
||||
| main.rs:647:5:647:6 | m4 | main.rs:39:1:46:1 | mod m4 |
|
||||
| main.rs:647:5:647:9 | ...::i | main.rs:42:5:45:5 | fn i |
|
||||
| main.rs:648:5:648:5 | h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:649:5:649:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
|
||||
| main.rs:650:5:650:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
|
||||
| main.rs:651:5:651:5 | j | main.rs:97:1:101:1 | fn j |
|
||||
| main.rs:652:5:652:6 | m6 | main.rs:109:1:120:1 | mod m6 |
|
||||
| main.rs:652:5:652:9 | ...::g | main.rs:114:5:119:5 | fn g |
|
||||
| main.rs:653:5:653:6 | m7 | main.rs:122:1:141:1 | mod m7 |
|
||||
| main.rs:653:5:653:9 | ...::f | main.rs:133:5:140:5 | fn f |
|
||||
| main.rs:654:5:654:6 | m8 | main.rs:143:1:197:1 | mod m8 |
|
||||
| main.rs:654:5:654:9 | ...::g | main.rs:181:5:196:5 | fn g |
|
||||
| main.rs:655:5:655:6 | m9 | main.rs:199:1:207:1 | mod m9 |
|
||||
| main.rs:655:5:655:9 | ...::f | main.rs:202:5:206:5 | fn f |
|
||||
| main.rs:656:5:656:7 | m11 | main.rs:230:1:267:1 | mod m11 |
|
||||
| main.rs:656:5:656:10 | ...::f | main.rs:235:5:238:5 | fn f |
|
||||
| main.rs:657:5:657:7 | m15 | main.rs:298:1:352:1 | mod m15 |
|
||||
| main.rs:657:5:657:10 | ...::f | main.rs:339:5:351:5 | fn f |
|
||||
| main.rs:658:5:658:7 | m16 | main.rs:354:1:446:1 | mod m16 |
|
||||
| main.rs:658:5:658:10 | ...::f | main.rs:421:5:445:5 | fn f |
|
||||
| main.rs:659:5:659:7 | m17 | main.rs:448:1:478:1 | mod m17 |
|
||||
| main.rs:659:5:659:10 | ...::f | main.rs:472:5:477:5 | fn f |
|
||||
| main.rs:660:5:660:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
|
||||
| main.rs:660:5:660:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
|
||||
| main.rs:661:5:661:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
|
||||
| main.rs:661:5:661:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
|
||||
| main.rs:662:5:662:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
|
||||
| main.rs:662:5:662:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
|
||||
| main.rs:663:5:663:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
|
||||
| main.rs:664:5:664:7 | m18 | main.rs:480:1:498:1 | mod m18 |
|
||||
| main.rs:664:5:664:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
|
||||
| main.rs:664:5:664:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
|
||||
| main.rs:664:5:664:20 | ...::g | main.rs:491:13:495:13 | fn g |
|
||||
| main.rs:665:5:665:7 | m23 | main.rs:527:1:552:1 | mod m23 |
|
||||
| main.rs:665:5:665:10 | ...::f | main.rs:547:5:551:5 | fn f |
|
||||
| main.rs:666:5:666:7 | m24 | main.rs:554:1:622:1 | mod m24 |
|
||||
| main.rs:666:5:666:10 | ...::f | main.rs:608:5:621:5 | fn f |
|
||||
| main.rs:667:5:667:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
|
||||
| main.rs:667:5:667:11 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| main.rs:669:5:669:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
|
||||
| main.rs:670:5:670:11 | AStruct | main.rs:629:1:629:17 | struct AStruct |
|
||||
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
|
||||
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
|
||||
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
|
||||
@@ -342,7 +354,7 @@ resolvePath
|
||||
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
|
||||
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h |
|
||||
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
|
||||
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:656:2 | SourceFile |
|
||||
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:672:2 | SourceFile |
|
||||
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h |
|
||||
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
|
||||
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
|
||||
@@ -369,4 +381,21 @@ resolvePath
|
||||
| my/nested.rs:21:5:21:11 | nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
|
||||
| my/nested.rs:21:5:21:20 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
|
||||
| my/nested.rs:21:5:21:23 | ...::f | my/nested.rs:3:9:5:9 | fn f |
|
||||
| proc_macro.rs:1:5:1:14 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
|
||||
| proc_macro.rs:1:5:1:27 | ...::TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
|
||||
| proc_macro.rs:2:5:2:9 | quote | {EXTERNAL LOCATION} | Crate(quote@1.0.40) |
|
||||
| proc_macro.rs:5:25:5:35 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
|
||||
| proc_macro.rs:5:44:5:54 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
|
||||
| proc_macro.rs:5:60:5:70 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
|
||||
| proc_macro.rs:6:16:6:18 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
|
||||
| proc_macro.rs:6:48:6:50 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
|
||||
| proc_macro.rs:6:48:6:58 | ...::LitStr | {EXTERNAL LOCATION} | struct LitStr |
|
||||
| proc_macro.rs:6:48:6:58 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse |
|
||||
| proc_macro.rs:7:19:7:21 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
|
||||
| proc_macro.rs:7:51:7:53 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
|
||||
| proc_macro.rs:7:51:7:61 | ...::ItemFn | {EXTERNAL LOCATION} | struct ItemFn |
|
||||
| proc_macro.rs:7:51:7:61 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse |
|
||||
| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
|
||||
| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident |
|
||||
| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new |
|
||||
testFailures
|
||||
|
||||
12
rust/ql/test/library-tests/path-resolution/proc_macro.rs
Normal file
12
rust/ql/test/library-tests/path-resolution/proc_macro.rs
Normal file
@@ -0,0 +1,12 @@
|
||||
use proc_macro::TokenStream;
|
||||
use quote::quote;
|
||||
|
||||
#[proc_macro_attribute]
|
||||
pub fn add_suffix(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
let suff = syn::parse_macro_input!(attr as syn::LitStr).value();
|
||||
let mut ast = syn::parse_macro_input!(item as syn::ItemFn);
|
||||
ast.sig.ident = syn::Ident::new(&format!("{}_{}", ast.sig.ident, suff), ast.sig.ident.span());
|
||||
quote! {
|
||||
#ast
|
||||
}.into()
|
||||
}
|
||||
Reference in New Issue
Block a user