about summary refs log tree commit diff
path: root/src/libsyntax/parse/parser.rs
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2013-08-08 13:28:06 -0400
committerNiko Matsakis <niko@alum.mit.edu>2013-08-08 19:41:02 -0400
commit33c6d3fd7880df371151ec3e9a053b7169a181e5 (patch)
tree55df69841505538e605cc5389455cdc96120052b /src/libsyntax/parse/parser.rs
parent8f65dbfcfa11aa521aa59881f6ab064bbd07184e (diff)
downloadrust-33c6d3fd7880df371151ec3e9a053b7169a181e5.tar.gz
rust-33c6d3fd7880df371151ec3e9a053b7169a181e5.zip
Allow attributes to appear as macro arguments
Fixes #8393
Diffstat (limited to 'src/libsyntax/parse/parser.rs')
-rw-r--r--src/libsyntax/parse/parser.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs
index 7d6dce22fb7..dcab89930dc 100644
--- a/src/libsyntax/parse/parser.rs
+++ b/src/libsyntax/parse/parser.rs
@@ -8,6 +8,8 @@
 // option. This file may not be copied, modified, or distributed
 // except according to those terms.
 
+#[macro_escape];
+
 use abi;
 use abi::AbiSet;
 use ast::{Sigil, BorrowedSigil, ManagedSigil, OwnedSigil};
@@ -4452,7 +4454,17 @@ impl Parser {
                                attrs: ~[Attribute],
                                macros_allowed: bool)
                                -> item_or_view_item {
-        maybe_whole!(iovi self, nt_item);
+        match *self.token {
+            INTERPOLATED(token::nt_item(item)) => {
+                self.bump();
+                let new_attrs = vec::append(attrs, item.attrs);
+                return iovi_item(@ast::item {
+                        attrs: new_attrs,
+                        ..(*item).clone()});
+            }
+            _ => {}
+        }
+
         let lo = self.span.lo;
 
         let visibility = self.parse_non_priv_visibility();