8000 Merge pull request #19600 from github/redsun82/rust-new-macro-expansi… · github/codeql@7d1a38f · GitHub
[go: up one dir, main page]

Skip to content

Commit 7d1a38f

Browse files
authored
Merge pull request #19600 from github/redsun82/rust-new-macro-expansion-integration-test
Rust: add more macro expansion tests
2 parents 7ccae93 + ece075c commit 7d1a38f

File tree

18 files changed

+105
-105
lines changed

18 files changed

+105
-105
lines changed

rust/ql/integration-tests/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
target/
2+
Cargo.lock

rust/ql/integration-tests/macro-expansion/Cargo.lock

Lines changed: 0 additions & 53 deletions
This file was deleted.
Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
11
[workspace]
2-
members = ["macros"]
2+
members = [ "attributes", "calls", "proc_macros"]
33
resolver = "2"
4-
5-
[package]
6-
name = "macro_expansion"
7-
version = "0.1.0"
8-
edition = "2024"
9-
10-
[dependencies]
11-
macros = { path = "macros" }
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[package]
2+
name = "attributes"
3+
version = "0.1.0"
4+
edition = "2024"
5+
6+
[dependencies]
7+
proc_macros = { path = "../proc_macros" }

rust/ql/integration-tests/macro-expansion/src/lib.rs renamed to rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use macros::repeat;
1+
use proc_macros::repeat;
22

33
#[repeat(3)]
44
fn foo() {
5-
println!("Hello, world!");
5+
_ = concat!("Hello ", "world!");
66

77
#[repeat(2)]
88
fn inner() {}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[package]
2+
name = "calls"
3+
version = "0.1.0"
4+
edition = "2024"
5+
6+
[dependencies]
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
fn included() {
2+
_ = concat!("Hello", " ", "world!"); // this doesn't expand (in included.rs) since 0.0.274
3+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
struct S;
2+
3+
macro_rules! def_x {
4+
() => {
5+
fn x() {}
6+
};
7+
}
8+
9+
impl S {
10+
def_x!(); // this doesn't expand since 0.0.274
11+
}
12+
13+
macro_rules! my_macro {
14+
($head:expr, $($tail:tt)*) => { format!($head, $($tail)*) };
15+
}
16+
17+
18+
fn test() {
19+
_ = concat!("x", "y");
20+
21+
_ = my_macro!(
22+
concat!("<", "{}", ">"), // this doesn't expand since 0.0.274
23+
"hi",
24+
);
25+
}
26+
27+
include!("included.rs");
28+
29+
#[doc = include_str!("some.txt")] // this doesn't expand since 0.0.274
30+
fn documented() {}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hey!

rust/ql/integration-tests/macro-expansion/diagnostics.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
"pretty": "__REDACTED__"
3939
}
4040
},
41-
"numberOfFiles": 2,
41+
"numberOfFiles": 4,
4242
"numberOfManifests": 1
4343
},
4444
"severity": "note",

rust/ql/integration-tests/macro-expansion/macros/Cargo.toml renamed to rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "macros"
2+
name = "proc_macros"
33
version = "0.1.0"
44
edition = "2024"
55

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
1-
macros/src/lib.rs
2-
src/lib.rs
1+
attributes/src/lib.rs
2+
calls/src/included.rs
3+
calls/src/lib.rs
4+
proc_macros/src/lib.rs

rust/ql/integration-tests/macro-expansion/summary.expected

Lines changed: 0 additions & 16 deletions
This file was deleted.

rust/ql/integration-tests/macro-expansion/summary.qlref

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,34 @@
1-
| src/lib.rs:3:1:9:1 | fn foo | 0 | src/lib.rs:4:1:8:16 | fn foo_0 |
2-
| src/lib.rs:3:1:9:1 | fn foo | 1 | src/lib.rs:4:1:8:16 | fn foo_1 |
3-
| src/lib.rs:3:1:9:1 | fn foo | 2 | src/lib.rs:4:1:8:16 | fn foo_2 |
4-
| src/lib.rs:7:5:8:16 | fn inner | 0 | src/lib.rs:8:5:8:16 | fn inner_0 |
5-
| src/lib.rs:7:5:8:16 | fn inner | 0 | src/lib.rs:8:5:8:16 | fn inner_0 |
6-
| src/lib.rs:7:5:8:16 | fn inner | 0 | src/lib.rs:8:5:8:16 | fn inner_0 |
7-
| src/lib.rs:7:5:8:16 | fn inner | 1 | src/lib.rs:8:5:8:16 | fn inner_1 |
8-
| src/lib.rs:7:5:8:16 | fn inner | 1 | src/lib.rs:8:5:8:16 | fn inner_1 |
9-
| src/lib.rs:7:5:8:16 | fn inner | 1 | src/lib.rs:8:5:8:16 | fn inner_1 |
10-
| src/lib.rs:11:1:13:11 | fn bar | 0 | src/lib.rs:12:1:13:10 | fn bar_0 |
11-
| src/lib.rs:11:1:13:11 | fn bar | 1 | src/lib.rs:12:1:13:10 | fn bar_1 |
12-
| src/lib.rs:12:1:13:10 | fn bar_0 | 0 | src/lib.rs:13:1:13:10 | fn bar_0_0 |
13-
| src/lib.rs:12:1:13:10 | fn bar_0 | 1 | src/lib.rs:13:1:13:10 | fn bar_0_1 |
14-
| src/lib.rs:12:1:13:10 | fn bar_0 | 2 | src/lib.rs:13:1:13:10 | fn bar_0_2 |
15-
| src/lib.rs:12:1:13:10 | fn bar_1 | 0 | src/lib.rs:13:1:13:10 | fn bar_1_0 |
16-
| src/lib.rs:12:1:13:10 | fn bar_1 | 1 | src/lib.rs:13:1:13:10 | fn bar_1_1 |
17-
| src/lib.rs:12:1:13:10 | fn bar_1 | 2 | src/lib.rs:13:1:13:10 | fn bar_1_2 |
1+
attribute_macros
2+
| attributes/src/lib.rs:3:1:9:1 | fn foo | 0 | attributes/src/lib.rs:4:1:8:16 | fn foo_0 |
3+
| attributes/src/lib.rs:3:1:9:1 | fn foo | 1 | attributes/src/lib.rs:4:1:8:16 | fn foo_1 |
4+
| attributes/src/lib.rs:3:1:9:1 | fn foo | 2 | attributes/src/lib.rs:4:1:8:16 | fn foo_2 |
5+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 |
6+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 |
7+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 0 | attributes/src/lib.rs:8:5:8:16 | fn inner_0 |
8+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 |
9+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 |
10+
| attributes/src/lib.rs:7:5:8:16 | fn inner | 1 | attributes/src/lib.rs:8:5:8:16 | fn inner_1 |
11+
| attributes/src/lib.rs:11:1:13:11 | fn bar | 0 | attributes/src/lib.rs:12:1:13:10 | fn bar_0 |
12+
| attributes/src/lib.rs:11:1:13:11 | fn bar | 1 | attributes/src/lib.rs:12:1:13:10 | fn bar_1 |
13+
| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_0 |
14+
| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_1 |
15+
| attributes/src/lib.rs:12:1:13:10 | fn bar_0 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_0_2 |
16+
| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 0 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_0 |
17+
| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 1 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_1 |
18+
| attributes/src/lib.rs:12:1:13:10 | fn bar_1 | 2 | attributes/src/lib.rs:13:1:13:10 | fn bar_1_2 |
19+
macro_calls
20+
| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" |
21+
| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" |
22+
| attributes/src/lib.rs:5:9:5:34 | concat!... | attributes/src/lib.rs:5:17:5:34 | "Hello world!" |
23+
| calls/src/included.rs:2:9:2:39 | concat!... | calls/src/included.rs:2:17:2:38 | "Hello world!" |
24+
| calls/src/lib.rs:10:5:10:13 | def_x!... | calls/src/lib.rs:10:5:10:13 | MacroItems |
25+
| calls/src/lib.rs:19:9:19:25 | concat!... | calls/src/lib.rs:19:17:19:24 | "xy" |
26+
| calls/src/lib.rs:21:9:24:5 | my_macro!... | calls/src/lib.rs:22:9:23:13 | MacroExpr |
27+
| calls/src/lib.rs:22:9:22:31 | concat!... | calls/src/lib.rs:22:17:22:30 | "<{}>" |
28+
| calls/src/lib.rs:22:9:23:13 | ...::format_args!... | calls/src/lib.rs:22:9:23:13 | FormatArgsExpr |
29+
| calls/src/lib.rs:22:9:23:13 | format!... | calls/src/lib.rs:22:9:23:13 | ...::must_use(...) |
30+
| calls/src/lib.rs:27:1:27:24 | concat!... | calls/src/lib.rs:27:1:27:24 | "Hello world!" |
31+
| calls/src/lib.rs:27:1:27:24 | include!... | calls/src/lib.rs:27:1:27:24 | MacroItems |
32+
| calls/src/lib.rs:29:9:29:32 | include_str!... | calls/src/lib.rs:29:22:29:31 | "" |
33+
unexpanded_macro_calls
34+
| attributes/src/lib.rs:5:9:5:35 | concat!... |
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
import rust
22

3-
from Item i, MacroItems items, int index, Item expanded
4-
where i.fromSource() and i.getAttributeMacroExpansion() = items and items.getItem(index) = expanded
5-
select i, index, expanded
3+
query predicate attribute_macros(Item i, int index, Item expanded) {
4+
i.fromSource() and expanded = i.getAttributeMacroExpansion().getItem(index)
5+
}
6+
7+
query predicate macro_calls(MacroCall c, AstNode expansion) {
8+
c.fromSource() and
9+
not c.getLocation().getFile().getAbsolutePath().matches("%proc_macros%") and
10+
expansion = c.getMacroCallExpansion()
11+
}
12+
13+
query predicate unexpanded_macro_calls(MacroCall c) {
14+
c.fromSource() and not c.hasMacroCallExpansion()
15+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello!

0 commit comments

Comments
 (0)
0