about summary refs log tree commit diff
path: root/src/libsyntax/print
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-13 21:01:04 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2019-07-15 12:42:07 +0300
commit23c5c1bfe7e3785fa1dcf1d3ff6e6bbaa855f66f (patch)
tree5a9132b707ba8bdda8428df4c5cc185db7618934 /src/libsyntax/print
parent500b00127b1b5f0b3891c73327e20a972940a715 (diff)
downloadrust-23c5c1bfe7e3785fa1dcf1d3ff6e6bbaa855f66f.tar.gz
rust-23c5c1bfe7e3785fa1dcf1d3ff6e6bbaa855f66f.zip
pprust: Use `print_mac_common` for attributes
Diffstat (limited to 'src/libsyntax/print')
-rw-r--r--src/libsyntax/print/pprust.rs22
1 files changed, 18 insertions, 4 deletions
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<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("]");
         }