aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2011-03-08 18:11:00 -0800
committerPatrick Walton <[email protected]>2011-03-08 18:11:00 -0800
commite64085b0a2b512822ed7f020659fc6bdb8ed8ef5 (patch)
tree5693bb0b4ab3eb47f46e3c773dfb91852b5c246c /src
parentrustc: Typecheck the base part of record extension expressions. Un-XFAIL rec-... (diff)
downloadrust-e64085b0a2b512822ed7f020659fc6bdb8ed8ef5.tar.xz
rust-e64085b0a2b512822ed7f020659fc6bdb8ed8ef5.zip
rustc: Fold over the paths in tag patterns so that we can resolve type variables in them
Diffstat (limited to 'src')
-rw-r--r--src/comp/middle/fold.rs5
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);
}
}
}