summary refs log tree commit diff
path: root/src/libsyntax/ext/tt
diff options
context:
space:
mode:
authorJoseph Dunne <jd@lambda.tech>2016-06-11 02:00:07 +0100
committerJoseph Dunne <jd@lambda.tech>2016-06-13 21:46:43 +0100
commitdc3d878e0f513bde3dfad69d4f2722e2884c23a3 (patch)
tree2d015d97944935b40d40b919debbb95b5176efc5 /src/libsyntax/ext/tt
parent0740a93cc290a5419807d2e8c6c442354baf46b0 (diff)
downloadrust-dc3d878e0f513bde3dfad69d4f2722e2884c23a3.tar.gz
rust-dc3d878e0f513bde3dfad69d4f2722e2884c23a3.zip
Add support for macro expansion inside trait items
Diffstat (limited to 'src/libsyntax/ext/tt')
-rw-r--r--src/libsyntax/ext/tt/macro_rules.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libsyntax/ext/tt/macro_rules.rs b/src/libsyntax/ext/tt/macro_rules.rs
index bbe989b0f40..fe98394c3e4 100644
--- a/src/libsyntax/ext/tt/macro_rules.rs
+++ b/src/libsyntax/ext/tt/macro_rules.rs
@@ -100,6 +100,21 @@ impl<'a> MacResult for ParserAnyMacro<'a> {
         Some(ret)
     }
 
+    fn make_trait_items(self: Box<ParserAnyMacro<'a>>)
+                       -> Option<SmallVector<ast::TraitItem>> {
+        let mut ret = SmallVector::zero();
+        loop {
+            let mut parser = self.parser.borrow_mut();
+            match parser.token {
+                token::Eof => break,
+                _ => ret.push(panictry!(parser.parse_trait_item()))
+            }
+        }
+        self.ensure_complete_parse(false, "item");
+        Some(ret)
+    }
+
+
     fn make_stmts(self: Box<ParserAnyMacro<'a>>)
                  -> Option<SmallVector<ast::Stmt>> {
         let mut ret = SmallVector::zero();