Handle paths correctly. This lets us handle one more test :-)
This commit is contained in:
parent
5066937f10
commit
21208f2343
3 changed files with 23 additions and 13 deletions
|
|
@ -421,6 +421,7 @@ TEST_XFAILS_BOOT := $(TASK_XFAILS) \
|
|||
|
||||
TEST_XFAILS_RUSTC := $(filter-out \
|
||||
$(addprefix test/run-pass/, \
|
||||
alt-path.rs \
|
||||
alt-pattern-simple.rs \
|
||||
alt-tag.rs \
|
||||
arith-0.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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
15
src/test/run-pass/alt-path.rs
Normal file
15
src/test/run-pass/alt-path.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import m1.foo;
|
||||
mod m1 {
|
||||
tag foo {
|
||||
foo1;
|
||||
foo2;
|
||||
}
|
||||
}
|
||||
fn bar(foo x) {
|
||||
alt(x) {
|
||||
case (m1.foo1) {
|
||||
}
|
||||
}
|
||||
}
|
||||
fn main(vec[str] args) {
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue