Skip to content

Commit b7e7a83

Browse files
committed
---
yaml --- r: 1304 b: refs/heads/master c: 21208f2 h: refs/heads/master v: v3
1 parent 1d9d9f3 commit b7e7a83

File tree

4 files changed

+24
-14
lines changed

4 files changed

+24
-14
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 5066937f108cf364cb31bdd517bf3d984ecec73d
2+
refs/heads/master: 21208f23439acfae35e615abbe791b3011b950bc

trunk/src/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,7 @@ TEST_XFAILS_BOOT := $(TASK_XFAILS) \
421421

422422
TEST_XFAILS_RUSTC := $(filter-out \
423423
$(addprefix test/run-pass/, \
424+
alt-path.rs \
424425
alt-pattern-simple.rs \
425426
alt-tag.rs \
426427
arith-0.rs \

trunk/src/comp/middle/resolve.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -381,21 +381,15 @@ fn fold_pat_tag(&env e, &span sp, ast.path p, vec[@ast.pat] args,
381381
auto len = _vec.len[ast.ident](p.node.idents);
382382
auto last_id = p.node.idents.(len - 1u);
383383
auto new_def;
384-
alt (lookup_name(e, last_id)) {
385-
case (some[def](?d)) {
386-
alt (d) {
387-
case (ast.def_variant(?did, ?vid)) {
388-
new_def = some[ast.variant_def](tup(did, vid));
389-
}
390-
case (_) {
391-
e.sess.span_err(sp, "not a tag variant: " + last_id);
392-
new_def = none[ast.variant_def];
393-
}
394-
}
384+
auto index = new_def_hash[def_wrap]();
385+
auto d = find_final_def(e, index, sp, p.node.idents, none[ast.def_id]);
386+
alt (unwrap_def(d)) {
387+
case (ast.def_variant(?did, ?vid)) {
388+
new_def = some[ast.variant_def](tup(did, vid));
395389
}
396-
case (none[def]) {
390+
case (_) {
391+
e.sess.span_err(sp, "not a tag variant: " + last_id);
397392
new_def = none[ast.variant_def];
398-
e.sess.span_err(sp, "unresolved name: " + last_id);
399393
}
400394
}
401395

trunk/src/test/run-pass/alt-path.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import m1.foo;
2+
mod m1 {
3+
tag foo {
4+
foo1;
5+
foo2;
6+
}
7+
}
8+
fn bar(foo x) {
9+
alt(x) {
10+
case (m1.foo1) {
11+
}
12+
}
13+
}
14+
fn main(vec[str] args) {
15+
}

0 commit comments

Comments
 (0)