Add a test for $:ident in proc macro input

This commit is contained in:
Vadim Petrochenkov 2020-05-31 00:20:06 +03:00
parent 4d5ce340cd
commit 81e06dac84
2 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,25 @@
// Check what token streams proc macros see when interpolated tokens are passed to them as input.
// check-pass
// aux-build:test-macros.rs
#[macro_use]
extern crate test_macros;
macro_rules! pass_ident {
($i:ident) => {
fn f() {
print_bang!($i);
}
#[print_attr]
const $i: u8 = 0;
#[derive(Print)]
struct $i {}
};
}
pass_ident!(A);
fn main() {}

View File

@ -0,0 +1,69 @@
PRINT-BANG INPUT (DISPLAY): A
PRINT-BANG RE-COLLECTED (DISPLAY): A
PRINT-BANG INPUT (DEBUG): TokenStream [
Group {
delimiter: None,
stream: TokenStream [
Ident {
ident: "A",
span: #0 bytes(402..403),
},
],
span: #3 bytes(269..271),
},
]
PRINT-ATTR INPUT (DISPLAY): const A: u8 = 0;
PRINT-ATTR RE-COLLECTED (DISPLAY): const A : u8 = 0 ;
PRINT-ATTR INPUT (DEBUG): TokenStream [
Ident {
ident: "const",
span: #0 bytes(0..0),
},
Ident {
ident: "A",
span: #0 bytes(0..0),
},
Punct {
ch: ':',
spacing: Alone,
span: #0 bytes(0..0),
},
Ident {
ident: "u8",
span: #0 bytes(0..0),
},
Punct {
ch: '=',
spacing: Alone,
span: #0 bytes(0..0),
},
Literal {
kind: Integer,
symbol: "0",
suffix: None,
span: #0 bytes(0..0),
},
Punct {
ch: ';',
spacing: Alone,
span: #0 bytes(0..0),
},
]
PRINT-DERIVE INPUT (DISPLAY): struct A {
}
PRINT-DERIVE RE-COLLECTED (DISPLAY): struct A { }
PRINT-DERIVE INPUT (DEBUG): TokenStream [
Ident {
ident: "struct",
span: #0 bytes(0..0),
},
Ident {
ident: "A",
span: #0 bytes(0..0),
},
Group {
delimiter: Brace,
stream: TokenStream [],
span: #0 bytes(0..0),
},
]