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:
Aaron Hill 2021-05-01 15:54:47 -04:00
parent 1025db84a6
commit 357c013ff5
No known key found for this signature in database
GPG Key ID: B4087E510E98B164
25 changed files with 176 additions and 53 deletions

View File

@ -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(..), .. }))
}

View File

@ -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)

View File

@ -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,

View 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() {}

View 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),
},
]