mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-22 20:03:37 +00:00
Remove some unncessary spaces from pretty-printed tokenstream output
In addition to making the output look nicer for all crates, this also aligns the pretty-printing output with what the `rental` crate expects. This will allow us to eventually disable a backwards-compat hack in a follow-up PR.
This commit is contained in:
parent
1025db84a6
commit
357c013ff5
@ -140,12 +140,15 @@ pub fn print_crate<'a>(
|
||||
// and also addresses some specific regressions described in #63896 and #73345.
|
||||
fn tt_prepend_space(tt: &TokenTree, prev: &TokenTree) -> bool {
|
||||
if let TokenTree::Token(token) = prev {
|
||||
if matches!(token.kind, token::Dot) {
|
||||
return false;
|
||||
}
|
||||
if let token::DocComment(comment_kind, ..) = token.kind {
|
||||
return comment_kind != CommentKind::Line;
|
||||
}
|
||||
}
|
||||
match tt {
|
||||
TokenTree::Token(token) => token.kind != token::Comma,
|
||||
TokenTree::Token(token) => !matches!(token.kind, token::Comma | token::Not | token::Dot),
|
||||
TokenTree::Delimited(_, DelimToken::Paren, _) => {
|
||||
!matches!(prev, TokenTree::Token(Token { kind: token::Ident(..), .. }))
|
||||
}
|
||||
|
@ -12,8 +12,7 @@ struct Foo < #[cfg(FALSE)] A, B >
|
||||
#[cfg_attr(not(FALSE), allow(warnings))] false => { }, _ => { }
|
||||
} ; #[print_helper(should_be_removed)] fn removed_fn()
|
||||
{ #! [cfg(FALSE)] } #[print_helper(c)] #[cfg(not(FALSE))] fn
|
||||
kept_fn() { # ! [cfg(not(FALSE))] let my_val = true ; } enum
|
||||
TupleEnum
|
||||
kept_fn() { #! [cfg(not(FALSE))] let my_val = true ; } enum TupleEnum
|
||||
{
|
||||
Foo(#[cfg(FALSE)] u8, #[cfg(FALSE)] bool, #[cfg(not(FALSE))] i32,
|
||||
#[cfg(FALSE)] String, u8)
|
||||
|
@ -71,7 +71,6 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
|
||||
},
|
||||
]
|
||||
PRINT-BANG INPUT (DISPLAY): "hi" "hello".len() + "world".len() (1 + 1)
|
||||
PRINT-BANG DEEP-RE-COLLECTED (DISPLAY): "hi" "hello" . len() + "world" . len() (1 + 1)
|
||||
PRINT-BANG INPUT (DEBUG): TokenStream [
|
||||
Literal {
|
||||
kind: Str,
|
||||
|
20
src/test/ui/proc-macro/pretty-print-tts.rs
Normal file
20
src/test/ui/proc-macro/pretty-print-tts.rs
Normal file
@ -0,0 +1,20 @@
|
||||
// check-pass
|
||||
// aux-build:test-macros.rs
|
||||
// compile-flags: -Z span-debug
|
||||
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
#![no_std] // Don't load unnecessary hygiene information from std
|
||||
extern crate std;
|
||||
|
||||
#[macro_use]
|
||||
extern crate test_macros;
|
||||
|
||||
// Tests the pretty-printing behavior of various (unparsed) tokens
|
||||
print_bang_consume!({
|
||||
#![rustc_dummy]
|
||||
let a = "hello".len();
|
||||
matches!(a, 5);
|
||||
});
|
||||
|
||||
fn main() {}
|
102
src/test/ui/proc-macro/pretty-print-tts.stdout
Normal file
102
src/test/ui/proc-macro/pretty-print-tts.stdout
Normal file
@ -0,0 +1,102 @@
|
||||
PRINT-BANG INPUT (DISPLAY): { #! [rustc_dummy] let a = "hello".len() ; matches! (a, 5) ; }
|
||||
PRINT-BANG INPUT (DEBUG): TokenStream [
|
||||
Group {
|
||||
delimiter: Brace,
|
||||
stream: TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
spacing: Joint,
|
||||
span: $DIR/pretty-print-tts.rs:15:5: 15:6 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: '!',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:15:6: 15:7 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Bracket,
|
||||
stream: TokenStream [
|
||||
Ident {
|
||||
ident: "rustc_dummy",
|
||||
span: $DIR/pretty-print-tts.rs:15:8: 15:19 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/pretty-print-tts.rs:15:7: 15:20 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "let",
|
||||
span: $DIR/pretty-print-tts.rs:16:5: 16:8 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "a",
|
||||
span: $DIR/pretty-print-tts.rs:16:9: 16:10 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: '=',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:16:11: 16:12 (#0),
|
||||
},
|
||||
Literal {
|
||||
kind: Str,
|
||||
symbol: "hello",
|
||||
suffix: None,
|
||||
span: $DIR/pretty-print-tts.rs:16:13: 16:20 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: '.',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:16:20: 16:21 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "len",
|
||||
span: $DIR/pretty-print-tts.rs:16:21: 16:24 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Parenthesis,
|
||||
stream: TokenStream [],
|
||||
span: $DIR/pretty-print-tts.rs:16:24: 16:26 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: ';',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:16:26: 16:27 (#0),
|
||||
},
|
||||
Ident {
|
||||
ident: "matches",
|
||||
span: $DIR/pretty-print-tts.rs:17:5: 17:12 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: '!',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:17:12: 17:13 (#0),
|
||||
},
|
||||
Group {
|
||||
delimiter: Parenthesis,
|
||||
stream: TokenStream [
|
||||
Ident {
|
||||
ident: "a",
|
||||
span: $DIR/pretty-print-tts.rs:17:14: 17:15 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: ',',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:17:15: 17:16 (#0),
|
||||
},
|
||||
Literal {
|
||||
kind: Integer,
|
||||
symbol: "5",
|
||||
suffix: None,
|
||||
span: $DIR/pretty-print-tts.rs:17:17: 17:18 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/pretty-print-tts.rs:17:13: 17:19 (#0),
|
||||
},
|
||||
Punct {
|
||||
ch: ';',
|
||||
spacing: Alone,
|
||||
span: $DIR/pretty-print-tts.rs:17:19: 17:20 (#0),
|
||||
},
|
||||
],
|
||||
span: $DIR/pretty-print-tts.rs:14:21: 18:2 (#0),
|
||||
},
|
||||
]
|
Loading…
Reference in New Issue
Block a user