Skip to content

Commit 4c4b4c4

Browse files
committed
Add test of proc_macro::TokenStream's Debug
1 parent 45ee336 commit 4c4b4c4

File tree

3 files changed

+221
-0
lines changed

3 files changed

+221
-0
lines changed
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// force-host
2+
// no-prefer-dynamic
3+
4+
#![crate_type = "proc-macro"]
5+
#![crate_name = "macro_dump_debug"]
6+
7+
extern crate proc_macro;
8+
use proc_macro::TokenStream;
9+
10+
#[proc_macro]
11+
pub fn dump_debug(tokens: TokenStream) -> TokenStream {
12+
eprintln!("{:?}", tokens);
13+
eprintln!("{:#?}", tokens);
14+
TokenStream::new()
15+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
// run-pass
2+
// aux-build:macro-dump-debug.rs
3+
4+
extern crate macro_dump_debug;
5+
use macro_dump_debug::dump_debug;
6+
7+
dump_debug! {
8+
ident // ident
9+
r#ident // raw ident
10+
, // alone punct
11+
==> // joint punct
12+
() // empty group
13+
[_] // nonempty group
14+
15+
// unsuffixed literals
16+
0
17+
1.0
18+
"S"
19+
b"B"
20+
r"R"
21+
r##"R"##
22+
br"BR"
23+
br##"BR"##
24+
'C'
25+
b'B'
26+
27+
// suffixed literals
28+
0q
29+
1.0q
30+
"S"q
31+
b"B"q
32+
r"R"q
33+
r##"R"##q
34+
br"BR"q
35+
br##"BR"##q
36+
'C'q
37+
b'B'q
38+
}
39+
40+
fn main() {}
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
TokenStream [Ident { ident: "ident", span: #0 bytes(130..135) }, Ident { ident: "r#ident", span: #0 bytes(151..158) }, Punct { ch: ',', spacing: Alone, span: #0 bytes(176..177) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(203..205) }, Punct { ch: '=', spacing: Joint, span: #0 bytes(203..205) }, Punct { ch: '>', spacing: Alone, span: #0 bytes(205..206) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: #0 bytes(230..232) }, Group { delimiter: Bracket, stream: TokenStream [Ident { ident: "_", span: #0 bytes(258..259) }], span: #0 bytes(257..260) }, Literal { kind: Integer, symbol: "0", suffix: None, span: #0 bytes(315..316) }, Literal { kind: Float, symbol: "1.0", suffix: None, span: #0 bytes(321..324) }, Literal { kind: Str, symbol: "S", suffix: None, span: #0 bytes(329..332) }, Literal { kind: ByteStr, symbol: "B", suffix: None, span: #0 bytes(337..341) }, Literal { kind: StrRaw(0), symbol: "R", suffix: None, span: #0 bytes(346..350) }, Literal { kind: StrRaw(2), symbol: "R", suffix: None, span: #0 bytes(355..363) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: None, span: #0 bytes(368..374) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: None, span: #0 bytes(379..389) }, Literal { kind: Char, symbol: "C", suffix: None, span: #0 bytes(394..397) }, Literal { kind: Byte, symbol: "B", suffix: None, span: #0 bytes(402..406) }, Literal { kind: Integer, symbol: "0", suffix: Some("q"), span: #0 bytes(437..439) }, Literal { kind: Float, symbol: "1.0", suffix: Some("q"), span: #0 bytes(444..448) }, Literal { kind: Str, symbol: "S", suffix: Some("q"), span: #0 bytes(453..457) }, Literal { kind: ByteStr, symbol: "B", suffix: Some("q"), span: #0 bytes(462..467) }, Literal { kind: StrRaw(0), symbol: "R", suffix: Some("q"), span: #0 bytes(472..477) }, Literal { kind: StrRaw(2), symbol: "R", suffix: Some("q"), span: #0 bytes(482..491) }, Literal { kind: ByteStrRaw(0), symbol: "BR", suffix: Some("q"), span: #0 bytes(496..503) }, Literal { kind: ByteStrRaw(2), symbol: "BR", suffix: Some("q"), span: #0 bytes(508..519) }, Literal { kind: Char, symbol: "C", suffix: Some("q"), span: #0 bytes(524..528) }, Literal { kind: Byte, symbol: "B", suffix: Some("q"), span: #0 bytes(533..538) }]
2+
TokenStream [
3+
Ident {
4+
ident: "ident",
5+
span: #0 bytes(130..135),
6+
},
7+
Ident {
8+
ident: "r#ident",
9+
span: #0 bytes(151..158),
10+
},
11+
Punct {
12+
ch: ',',
13+
spacing: Alone,
14+
span: #0 bytes(176..177),
15+
},
16+
Punct {
17+
ch: '=',
18+
spacing: Joint,
19+
span: #0 bytes(203..205),
20+
},
21+
Punct {
22+
ch: '=',
23+
spacing: Joint,
24+
span: #0 bytes(203..205),
25+
},
26+
Punct {
27+
ch: '>',
28+
spacing: Alone,
29+
span: #0 bytes(205..206),
30+
},
31+
Group {
32+
delimiter: Parenthesis,
33+
stream: TokenStream [],
34+
span: #0 bytes(230..232),
35+
},
36+
Group {
37+
delimiter: Bracket,
38+
stream: TokenStream [
39+
Ident {
40+
ident: "_",
41+
span: #0 bytes(258..259),
42+
},
43+
],
44+
span: #0 bytes(257..260),
45+
},
46+
Literal {
47+
kind: Integer,
48+
symbol: "0",
49+
suffix: None,
50+
span: #0 bytes(315..316),
51+
},
52+
Literal {
53+
kind: Float,
54+
symbol: "1.0",
55+
suffix: None,
56+
span: #0 bytes(321..324),
57+
},
58+
Literal {
59+
kind: Str,
60+
symbol: "S",
61+
suffix: None,
62+
span: #0 bytes(329..332),
63+
},
64+
Literal {
65+
kind: ByteStr,
66+
symbol: "B",
67+
suffix: None,
68+
span: #0 bytes(337..341),
69+
},
70+
Literal {
71+
kind: StrRaw(0),
72+
symbol: "R",
73+
suffix: None,
74+
span: #0 bytes(346..350),
75+
},
76+
Literal {
77+
kind: StrRaw(2),
78+
symbol: "R",
79+
suffix: None,
80+
span: #0 bytes(355..363),
81+
},
82+
Literal {
83+
kind: ByteStrRaw(0),
84+
symbol: "BR",
85+
suffix: None,
86+
span: #0 bytes(368..374),
87+
},
88+
Literal {
89+
kind: ByteStrRaw(2),
90+
symbol: "BR",
91+
suffix: None,
92+
span: #0 bytes(379..389),
93+
},
94+
Literal {
95+
kind: Char,
96+
symbol: "C",
97+
suffix: None,
98+
span: #0 bytes(394..397),
99+
},
100+
Literal {
101+
kind: Byte,
102+
symbol: "B",
103+
suffix: None,
104+
span: #0 bytes(402..406),
105+
},
106+
Literal {
107+
kind: Integer,
108+
symbol: "0",
109+
suffix: Some("q"),
110+
span: #0 bytes(437..439),
111+
},
112+
Literal {
113+
kind: Float,
114+
symbol: "1.0",
115+
suffix: Some("q"),
116+
span: #0 bytes(444..448),
117+
},
118+
Literal {
119+
kind: Str,
120+
symbol: "S",
121+
suffix: Some("q"),
122+
span: #0 bytes(453..457),
123+
},
124+
Literal {
125+
kind: ByteStr,
126+
symbol: "B",
127+
suffix: Some("q"),
128+
span: #0 bytes(462..467),
129+
},
130+
Literal {
131+
kind: StrRaw(0),
132+
symbol: "R",
133+
suffix: Some("q"),
134+
span: #0 bytes(472..477),
135+
},
136+
Literal {
137+
kind: StrRaw(2),
138+
symbol: "R",
139+
suffix: Some("q"),
140+
span: #0 bytes(482..491),
141+
},
142+
Literal {
143+
kind: ByteStrRaw(0),
144+
symbol: "BR",
145+
suffix: Some("q"),
146+
span: #0 bytes(496..503),
147+
},
148+
Literal {
149+
kind: ByteStrRaw(2),
150+
symbol: "BR",
151+
suffix: Some("q"),
152+
span: #0 bytes(508..519),
153+
},
154+
Literal {
155+
kind: Char,
156+
symbol: "C",
157+
suffix: Some("q"),
158+
span: #0 bytes(524..528),
159+
},
160+
Literal {
161+
kind: Byte,
162+
symbol: "B",
163+
suffix: Some("q"),
164+
span: #0 bytes(533..538),
165+
},
166+
]

0 commit comments

Comments
 (0)