diff options
| author | Keegan McAllister <kmcallister@mozilla.com> | 2014-05-19 13:29:41 -0700 |
|---|---|---|
| committer | Keegan McAllister <kmcallister@mozilla.com> | 2014-05-28 12:42:21 -0700 |
| commit | 5fdd0e4b05979a0a01ca6c14e0510880d320250c (patch) | |
| tree | 39cf0ef1e32d62913e2df001f2ff06db5cf3b2dd /src/libsyntax | |
| parent | 28a4ee5eeb6a7450f5c16b902504992e990c7042 (diff) | |
| download | rust-5fdd0e4b05979a0a01ca6c14e0510880d320250c.tar.gz rust-5fdd0e4b05979a0a01ca6c14e0510880d320250c.zip | |
Add AST node for pattern macros
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/ast_util.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 1 | ||||
| -rw-r--r-- | src/libsyntax/visit.rs | 1 |
5 files changed, 6 insertions, 1 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 69a92a87185..edeff1229bd 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -353,7 +353,8 @@ pub enum Pat_ { PatRange(@Expr, @Expr), // [a, b, ..i, y, z] is represented as // PatVec(~[a, b], Some(i), ~[y, z]) - PatVec(Vec<@Pat> , Option<@Pat>, Vec<@Pat> ) + PatVec(Vec<@Pat> , Option<@Pat>, Vec<@Pat> ), + PatMac(Mac), } #[deriving(Clone, Eq, TotalEq, Encodable, Decodable, Hash, Show)] diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index 3e41e58fbe2..5b61cd45483 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -665,6 +665,7 @@ pub fn walk_pat(pat: &Pat, it: |&Pat| -> bool) -> bool { slice.iter().advance(|&p| walk_pat(p, |p| it(p))) && after.iter().advance(|&p| walk_pat(p, |p| it(p))) } + PatMac(_) => fail!("attempted to analyze unexpanded pattern"), PatWild | PatWildMulti | PatLit(_) | PatRange(_, _) | PatIdent(_, _, _) | PatEnum(_, _) => { true diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 1607820326b..b66d1f7eae5 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -770,6 +770,7 @@ pub fn noop_fold_pat<T: Folder>(p: @Pat, folder: &mut T) -> @Pat { slice.map(|x| folder.fold_pat(x)), after.iter().map(|x| folder.fold_pat(*x)).collect()) } + PatMac(ref mac) => PatMac(folder.fold_mac(mac)), }; @Pat { diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 3cb2d0b421c..3127085ffed 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1757,6 +1757,7 @@ impl<'a> State<'a> { |s, &p| s.print_pat(p))); try!(word(&mut self.s, "]")); } + ast::PatMac(ref m) => try!(self.print_mac(m)), } self.ann.post(self, NodePat(pat)) } diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index ce10d0db3ba..eb7aeb0e327 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -457,6 +457,7 @@ pub fn walk_pat<E: Clone, V: Visitor<E>>(visitor: &mut V, pattern: &Pat, env: E) visitor.visit_pat(*postpattern, env.clone()) } } + PatMac(ref macro) => visitor.visit_mac(macro, env), } } |
