From 23c5c1bfe7e3785fa1dcf1d3ff6e6bbaa855f66f Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sat, 13 Jul 2019 21:01:04 +0300 Subject: pprust: Use `print_mac_common` for attributes --- src/libsyntax/print/pprust.rs | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 8542be8ea60..af9f6bb442d 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -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}; @@ -619,9 +619,23 @@ pub trait PrintState<'a>: std::ops::Deref + 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("]"); } -- cgit 1.4.1-3-g733a5