From 75896011dc2a137d96a4941f5c415c2c108f5cf9 Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sat, 13 Jul 2019 23:24:58 +0300 Subject: [PATCH] pprust: Do not convert attributes into `MetaItem`s for printing Fixes https://github.com/rust-lang/rust/issues/62628 --- src/libsyntax/print/pprust.rs | 26 ++++++++++-------------- src/test/pretty/attr-literals.rs | 4 ++-- src/test/pretty/attr-tokens-raw-ident.rs | 7 +++++++ 3 files changed, 20 insertions(+), 17 deletions(-) create mode 100644 src/test/pretty/attr-tokens-raw-ident.rs diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index e101168a137..a07bba04489 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -617,21 +617,17 @@ pub trait PrintState<'a>: std::ops::Deref + std::ops::DerefM ast::AttrStyle::Outer => self.word("#["), } self.ibox(0); - if let Some(mi) = attr.meta() { - self.print_meta_item(&mi); - } else { - match attr.tokens.trees().next() { - Some(TokenTree::Delimited(_, delim, tts)) => { - self.print_mac_common( - Some(&attr.path), false, None, delim, tts, true, attr.span - ); - } - tree => { - self.print_path(&attr.path, false, 0); - if tree.is_some() { - self.space(); - self.print_tts(attr.tokens.clone(), true); - } + match attr.tokens.trees().next() { + Some(TokenTree::Delimited(_, delim, tts)) => { + self.print_mac_common( + Some(&attr.path), false, None, delim, tts, true, attr.span + ); + } + tree => { + self.print_path(&attr.path, false, 0); + if tree.is_some() { + self.space(); + self.print_tts(attr.tokens.clone(), true); } } } diff --git a/src/test/pretty/attr-literals.rs b/src/test/pretty/attr-literals.rs index 44d2c5db3e6..bcd6ffaaf81 100644 --- a/src/test/pretty/attr-literals.rs +++ b/src/test/pretty/attr-literals.rs @@ -5,10 +5,10 @@ #![feature(rustc_attrs)] fn main() { - #![rustc_dummy("hi", 1, 2, 1.012, pi = 3.14, bye, name("John"))] + #![rustc_dummy("hi" , 1 , 2 , 1.012 , pi = 3.14 , bye , name ("John"))] #[rustc_dummy = 8] fn f() { } - #[rustc_dummy(1, 2, 3)] + #[rustc_dummy(1 , 2 , 3)] fn g() { } } diff --git a/src/test/pretty/attr-tokens-raw-ident.rs b/src/test/pretty/attr-tokens-raw-ident.rs new file mode 100644 index 00000000000..bb2c4bb558e --- /dev/null +++ b/src/test/pretty/attr-tokens-raw-ident.rs @@ -0,0 +1,7 @@ +// Keywords in attribute paths are printed as raw idents, +// but keywords in attribute arguments are not. + +// pp-exact + +#[rustfmt::r#final(final)] +fn main() { }