Skip to content

Commit

Permalink
pprust: Use print_mac_common for attributes
Browse files Browse the repository at this point in the history
  • Loading branch information
petrochenkov committed Jul 15, 2019
1 parent 500b001 commit 23c5c1b
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 5 deletions.
22 changes: 18 additions & 4 deletions src/libsyntax/print/pprust.rs
Expand Up @@ -4,7 +4,7 @@ use crate::ast::{Attribute, MacDelimiter, GenericArg};
use crate::util::parser::{self, AssocOp, Fixity};
use crate::attr;
use crate::source_map::{self, SourceMap, Spanned};
use crate::parse::token::{self, BinOpToken, Nonterminal, Token, TokenKind};
use crate::parse::token::{self, BinOpToken, DelimToken, Nonterminal, Token, TokenKind};
use crate::parse::lexer::comments;
use crate::parse::{self, ParseSess};
use crate::print::pp::{self, Breaks};
Expand Down Expand Up @@ -619,9 +619,23 @@ pub trait PrintState<'a>: std::ops::Deref<Target=pp::Printer> + std::ops::DerefM
if let Some(mi) = attr.meta() {
self.print_meta_item(&mi);
} else {
self.print_path(&attr.path, false, 0);
self.space();
self.print_tts(attr.tokens.clone(), true);
match attr.tokens.trees().next() {
Some(TokenTree::Delimited(_, delim, tts)) => {
let delim = match delim {
DelimToken::Brace => MacDelimiter::Brace,
DelimToken::Bracket => MacDelimiter::Bracket,
DelimToken::Paren | DelimToken::NoDelim => MacDelimiter::Parenthesis,
};
self.print_mac_common(&attr.path, false, None, tts, delim, attr.span);
}
tree => {
self.print_path(&attr.path, false, 0);
if tree.is_some() {
self.space();
self.print_tts(attr.tokens.clone(), true);
}
}
}
}
self.word("]");
}
Expand Down
2 changes: 1 addition & 1 deletion src/test/run-pass/proc-macro/auxiliary/derive-b.rs
Expand Up @@ -10,7 +10,7 @@ use proc_macro::TokenStream;
#[proc_macro_derive(B, attributes(B, C))]
pub fn derive(input: TokenStream) -> TokenStream {
let input = input.to_string();
assert!(input.contains("#[B [ arbitrary tokens ]]"));
assert!(input.contains("#[B[arbitrary tokens]]"));
assert!(input.contains("struct B {"));
assert!(input.contains("#[C]"));
"".parse().unwrap()
Expand Down

0 comments on commit 23c5c1b

Please sign in to comment.