diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-08-06 17:01:14 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-08-06 17:36:24 -0700 |
| commit | 253dfc338775570a76d6c68bf349b2026e700797 (patch) | |
| tree | 016895b995fc0bce525eae43c83edecae9e9e750 /src/libsyntax/fold.rs | |
| parent | 5cb3a94bfbafc6548b2dde42beddc903a97c9eb2 (diff) | |
rustc: Implement pattern matching for structs
Diffstat (limited to 'src/libsyntax/fold.rs')
| -rw-r--r-- | src/libsyntax/fold.rs | 10 |
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)), |
