mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-22 23:04:33 +00:00
ac26b883bf
When converting something like `#![cfg_attr(cond, attr)]` into `#![attr]`, we currently duplicate the `#` token and the `!` token. But weirdly, there is also this comment: // We don't really have a good span to use for the synthesized `[]` // in `#[attr]`, so just use the span of the `#` token. Maybe that comment used to be true? But now it is false: we can duplicate the existing delimiters (and their spans and spacing), much like we do for the `#` and `!`. This commit does that, thus removing the incorrect comment, and improving the spans on `Group`s in a few proc-macro tests.
181 lines
8.2 KiB
Plaintext
181 lines
8.2 KiB
Plaintext
PRINT-DERIVE INPUT (DISPLAY): struct Foo
|
|
{
|
|
val :
|
|
[bool;
|
|
{
|
|
let a = #[rustc_dummy(first)] #[rustc_dummy(second)]
|
|
{ #![allow(unused)] 30 }; 0
|
|
}]
|
|
}
|
|
PRINT-DERIVE DEEP-RE-COLLECTED (DISPLAY): struct Foo
|
|
{
|
|
val :
|
|
[bool;
|
|
{
|
|
let a = #[rustc_dummy(first)] #[rustc_dummy(second)]
|
|
{ #! [allow(unused)] 30 }; 0
|
|
}]
|
|
}
|
|
PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
|
Ident {
|
|
ident: "struct",
|
|
span: $DIR/macro-rules-derive-cfg.rs:17:9: 17:15 (#3),
|
|
},
|
|
Ident {
|
|
ident: "Foo",
|
|
span: $DIR/macro-rules-derive-cfg.rs:17:16: 17:19 (#3),
|
|
},
|
|
Group {
|
|
delimiter: Brace,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "val",
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:13: 18:16 (#3),
|
|
},
|
|
Punct {
|
|
ch: ':',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:16: 18:17 (#3),
|
|
},
|
|
Group {
|
|
delimiter: Bracket,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "bool",
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:19: 18:23 (#3),
|
|
},
|
|
Punct {
|
|
ch: ';',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:23: 18:24 (#3),
|
|
},
|
|
Group {
|
|
delimiter: Brace,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "let",
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:17: 19:20 (#3),
|
|
},
|
|
Ident {
|
|
ident: "a",
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:21: 19:22 (#3),
|
|
},
|
|
Punct {
|
|
ch: '=',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:23: 19:24 (#3),
|
|
},
|
|
Punct {
|
|
ch: '#',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:25: 19:26 (#3),
|
|
},
|
|
Group {
|
|
delimiter: Bracket,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "rustc_dummy",
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:48: 19:59 (#3),
|
|
},
|
|
Group {
|
|
delimiter: Parenthesis,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "first",
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:60: 19:65 (#3),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:59: 19:66 (#3),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:26: 19:68 (#3),
|
|
},
|
|
Punct {
|
|
ch: '#',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:13: 26:14 (#0),
|
|
},
|
|
Group {
|
|
delimiter: Bracket,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "rustc_dummy",
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:36: 26:47 (#0),
|
|
},
|
|
Group {
|
|
delimiter: Parenthesis,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "second",
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:48: 26:54 (#0),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:47: 26:55 (#0),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:14: 26:57 (#0),
|
|
},
|
|
Group {
|
|
delimiter: Brace,
|
|
stream: TokenStream [
|
|
Punct {
|
|
ch: '#',
|
|
spacing: Joint,
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:5: 27:6 (#0),
|
|
},
|
|
Punct {
|
|
ch: '!',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:6: 27:7 (#0),
|
|
},
|
|
Group {
|
|
delimiter: Bracket,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "allow",
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:29: 27:34 (#0),
|
|
},
|
|
Group {
|
|
delimiter: Parenthesis,
|
|
stream: TokenStream [
|
|
Ident {
|
|
ident: "unused",
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:35: 27:41 (#0),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:34: 27:42 (#0),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:27:7: 27:44 (#0),
|
|
},
|
|
Literal {
|
|
kind: Integer,
|
|
symbol: "30",
|
|
suffix: None,
|
|
span: $DIR/macro-rules-derive-cfg.rs:28:5: 28:7 (#0),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:26:58: 29:2 (#0),
|
|
},
|
|
Punct {
|
|
ch: ';',
|
|
spacing: Alone,
|
|
span: $DIR/macro-rules-derive-cfg.rs:19:74: 19:75 (#3),
|
|
},
|
|
Literal {
|
|
kind: Integer,
|
|
symbol: "0",
|
|
suffix: None,
|
|
span: $DIR/macro-rules-derive-cfg.rs:20:17: 20:18 (#3),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:25: 21:14 (#3),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:18:18: 21:15 (#3),
|
|
},
|
|
],
|
|
span: $DIR/macro-rules-derive-cfg.rs:17:20: 22:10 (#3),
|
|
},
|
|
]
|