Skip to content

Commit 81e06da

Browse files
committed
Add a test for $:ident in proc macro input
1 parent 4d5ce34 commit 81e06da

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Check what token streams proc macros see when interpolated tokens are passed to them as input.
2+
3+
// check-pass
4+
// aux-build:test-macros.rs
5+
6+
#[macro_use]
7+
extern crate test_macros;
8+
9+
macro_rules! pass_ident {
10+
($i:ident) => {
11+
fn f() {
12+
print_bang!($i);
13+
}
14+
15+
#[print_attr]
16+
const $i: u8 = 0;
17+
18+
#[derive(Print)]
19+
struct $i {}
20+
};
21+
}
22+
23+
pass_ident!(A);
24+
25+
fn main() {}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
PRINT-BANG INPUT (DISPLAY): A
2+
PRINT-BANG RE-COLLECTED (DISPLAY): A
3+
PRINT-BANG INPUT (DEBUG): TokenStream [
4+
Group {
5+
delimiter: None,
6+
stream: TokenStream [
7+
Ident {
8+
ident: "A",
9+
span: #0 bytes(402..403),
10+
},
11+
],
12+
span: #3 bytes(269..271),
13+
},
14+
]
15+
PRINT-ATTR INPUT (DISPLAY): const A: u8 = 0;
16+
PRINT-ATTR RE-COLLECTED (DISPLAY): const A : u8 = 0 ;
17+
PRINT-ATTR INPUT (DEBUG): TokenStream [
18+
Ident {
19+
ident: "const",
20+
span: #0 bytes(0..0),
21+
},
22+
Ident {
23+
ident: "A",
24+
span: #0 bytes(0..0),
25+
},
26+
Punct {
27+
ch: ':',
28+
spacing: Alone,
29+
span: #0 bytes(0..0),
30+
},
31+
Ident {
32+
ident: "u8",
33+
span: #0 bytes(0..0),
34+
},
35+
Punct {
36+
ch: '=',
37+
spacing: Alone,
38+
span: #0 bytes(0..0),
39+
},
40+
Literal {
41+
kind: Integer,
42+
symbol: "0",
43+
suffix: None,
44+
span: #0 bytes(0..0),
45+
},
46+
Punct {
47+
ch: ';',
48+
spacing: Alone,
49+
span: #0 bytes(0..0),
50+
},
51+
]
52+
PRINT-DERIVE INPUT (DISPLAY): struct A {
53+
}
54+
PRINT-DERIVE RE-COLLECTED (DISPLAY): struct A { }
55+
PRINT-DERIVE INPUT (DEBUG): TokenStream [
56+
Ident {
57+
ident: "struct",
58+
span: #0 bytes(0..0),
59+
},
60+
Ident {
61+
ident: "A",
62+
span: #0 bytes(0..0),
63+
},
64+
Group {
65+
delimiter: Brace,
66+
stream: TokenStream [],
67+
span: #0 bytes(0..0),
68+
},
69+
]

0 commit comments

Comments
 (0)