aboutsummaryrefslogtreecommitdiff
path: root/src/comp/middle
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp/middle')
-rw-r--r--src/comp/middle/resolve.rs20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/comp/middle/resolve.rs b/src/comp/middle/resolve.rs
index 76dcc9dc..8010b2a5 100644
--- a/src/comp/middle/resolve.rs
+++ b/src/comp/middle/resolve.rs
@@ -381,21 +381,15 @@ fn fold_pat_tag(&env e, &span sp, ast.path p, vec[@ast.pat] args,
auto len = _vec.len[ast.ident](p.node.idents);
auto last_id = p.node.idents.(len - 1u);
auto new_def;
- alt (lookup_name(e, last_id)) {
- case (some[def](?d)) {
- alt (d) {
- case (ast.def_variant(?did, ?vid)) {
- new_def = some[ast.variant_def](tup(did, vid));
- }
- case (_) {
- e.sess.span_err(sp, "not a tag variant: " + last_id);
- new_def = none[ast.variant_def];
- }
- }
+ auto index = new_def_hash[def_wrap]();
+ auto d = find_final_def(e, index, sp, p.node.idents, none[ast.def_id]);
+ alt (unwrap_def(d)) {
+ case (ast.def_variant(?did, ?vid)) {
+ new_def = some[ast.variant_def](tup(did, vid));
}
- case (none[def]) {
+ case (_) {
+ e.sess.span_err(sp, "not a tag variant: " + last_id);
new_def = none[ast.variant_def];
- e.sess.span_err(sp, "unresolved name: " + last_id);
}
}