diff options
| author | Patrick Walton <[email protected]> | 2011-03-08 18:11:00 -0800 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2011-03-08 18:11:00 -0800 |
| commit | e64085b0a2b512822ed7f020659fc6bdb8ed8ef5 (patch) | |
| tree | 5693bb0b4ab3eb47f46e3c773dfb91852b5c246c | |
| parent | rustc: Typecheck the base part of record extension expressions. Un-XFAIL rec-... (diff) | |
| download | rust-e64085b0a2b512822ed7f020659fc6bdb8ed8ef5.tar.xz rust-e64085b0a2b512822ed7f020659fc6bdb8ed8ef5.zip | |
rustc: Fold over the paths in tag patterns so that we can resolve type variables in them
| -rw-r--r-- | src/comp/middle/fold.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/comp/middle/fold.rs b/src/comp/middle/fold.rs index 8a1dc70f..ccf3457b 100644 --- a/src/comp/middle/fold.rs +++ b/src/comp/middle/fold.rs @@ -452,11 +452,14 @@ fn fold_pat[ENV](&ENV env, ast_fold[ENV] fld, @ast.pat p) -> @ast.pat { ret fld.fold_pat_bind(env_, p.span, id, did, t); } case (ast.pat_tag(?path, ?pats, ?d, ?t)) { + auto ppath = fold_path(env, fld, path); + let vec[@ast.pat] ppats = vec(); for (@ast.pat pat in pats) { ppats += vec(fold_pat(env_, fld, pat)); } - ret fld.fold_pat_tag(env_, p.span, path, ppats, d, t); + + ret fld.fold_pat_tag(env_, p.span, ppath, ppats, d, t); } } } |