about summary refs log tree commit diff
path: root/src/libsyntax/fold.rs
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-08-06 17:01:14 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-08-06 17:36:24 -0700
commit253dfc338775570a76d6c68bf349b2026e700797 (patch)
tree016895b995fc0bce525eae43c83edecae9e9e750 /src/libsyntax/fold.rs
parent5cb3a94bfbafc6548b2dde42beddc903a97c9eb2 (diff)
rustc: Implement pattern matching for structs
Diffstat (limited to 'src/libsyntax/fold.rs')
-rw-r--r--src/libsyntax/fold.rs10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs
index 40c676f8b80..57cebbf044a 100644
--- a/src/libsyntax/fold.rs
+++ b/src/libsyntax/fold.rs
@@ -354,6 +354,16 @@ fn noop_fold_pat(p: pat_, fld: ast_fold) -> pat_ {
             }
             pat_rec(fs, etc)
           }
+          pat_struct(pth, fields, etc) => {
+            let pth_ = fld.fold_path(pth);
+            let mut fs = ~[];
+            for fields.each |f| {
+                vec::push(fs,
+                          {ident: /* FIXME (#2543) */ copy f.ident,
+                           pat: fld.fold_pat(f.pat)});
+            }
+            pat_struct(pth_, fs, etc)
+          }
           pat_tup(elts) => pat_tup(vec::map(elts, |x| fld.fold_pat(x))),
           pat_box(inner) => pat_box(fld.fold_pat(inner)),
           pat_uniq(inner) => pat_uniq(fld.fold_pat(inner)),