parent
c8915eebea
commit
3ed6caae60
@ -257,7 +257,16 @@ pub fn nt_to_tokenstream(
|
||||
let tokens = match *nt {
|
||||
Nonterminal::NtItem(ref item) => prepend_attrs(sess, &item.attrs, nt, item.tokens.as_ref()),
|
||||
Nonterminal::NtBlock(ref block) => convert_tokens(block.tokens.as_ref()),
|
||||
Nonterminal::NtStmt(ref stmt) => prepend_attrs(sess, stmt.attrs(), nt, stmt.tokens()),
|
||||
Nonterminal::NtStmt(ref stmt) => {
|
||||
let do_prepend = |tokens| prepend_attrs(sess, stmt.attrs(), nt, tokens);
|
||||
if let ast::StmtKind::Empty = stmt.kind {
|
||||
let tokens: TokenStream =
|
||||
tokenstream::TokenTree::token(token::Semi, stmt.span).into();
|
||||
do_prepend(Some(&LazyTokenStream::new(tokens)))
|
||||
} else {
|
||||
do_prepend(stmt.tokens())
|
||||
}
|
||||
}
|
||||
Nonterminal::NtPat(ref pat) => convert_tokens(pat.tokens.as_ref()),
|
||||
Nonterminal::NtTy(ref ty) => convert_tokens(ty.tokens.as_ref()),
|
||||
Nonterminal::NtIdent(ident, is_raw) => {
|
||||
|
26
src/test/ui/proc-macro/issue-80760-empty-stmt.rs
Normal file
26
src/test/ui/proc-macro/issue-80760-empty-stmt.rs
Normal file
@ -0,0 +1,26 @@
|
||||
// check-pass
|
||||
// aux-build:test-macros.rs
|
||||
// compile-flags: -Z span-debug
|
||||
|
||||
#![no_std] // Don't load unnecessary hygiene information from std
|
||||
extern crate std;
|
||||
|
||||
#[macro_use]
|
||||
extern crate test_macros;
|
||||
|
||||
macro_rules! empty_stmt {
|
||||
($s:stmt) => {
|
||||
print_bang!($s);
|
||||
|
||||
// Currently, all attributes are ignored
|
||||
// on an empty statement
|
||||
#[print_attr]
|
||||
#[rustc_dummy(first)]
|
||||
#[rustc_dummy(second)]
|
||||
$s
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
empty_stmt!(;);
|
||||
}
|
14
src/test/ui/proc-macro/issue-80760-empty-stmt.stdout
Normal file
14
src/test/ui/proc-macro/issue-80760-empty-stmt.stdout
Normal file
@ -0,0 +1,14 @@
|
||||
PRINT-BANG INPUT (DISPLAY): ;
|
||||
PRINT-BANG INPUT (DEBUG): TokenStream [
|
||||
Group {
|
||||
delimiter: None,
|
||||
stream: TokenStream [
|
||||
Punct {
|
||||
ch: ';',
|
||||
spacing: Alone,
|
||||
span: $DIR/issue-80760-empty-stmt.rs:25:17: 25:18 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/issue-80760-empty-stmt.rs:13:21: 13:23 (#4),
|
||||
},
|
||||
]
|
Loading…
Reference in New Issue
Block a user