Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7d1a38f

Browse filesBrowse 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
Copy full SHA for 7d1a38f

File tree

Expand file treeCollapse file tree

18 files changed

+105
-105
lines changed
Filter options
Expand file treeCollapse file tree

18 files changed

+105
-105
lines changed

‎rust/ql/integration-tests/.gitignore

Copy file name to clipboard
+1Lines 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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/Cargo.lock
-53Lines changed: 0 additions & 53 deletions
This file was deleted.
+1-9Lines 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" }
+7Lines 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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/attributes/src/lib.rs
+2-2Lines 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() {}
+6Lines 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]
+3Lines 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+
}
+30Lines 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() {}
+1Lines 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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/diagnostics.expected
+1-1Lines 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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/proc_macros/Cargo.toml
+1-1Lines 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

+4-2Lines 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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/summary.expected
-16Lines changed: 0 additions & 16 deletions
This file was deleted.

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

Copy file name to clipboardExpand all lines: rust/ql/integration-tests/macro-expansion/summary.qlref
-1Lines changed: 0 additions & 1 deletion
This file was deleted.
+34-17Lines 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!... |
+13-3Lines 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+
}
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Hello!

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.