aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Walton <[email protected]>2010-11-22 17:38:23 -0800
committerPatrick Walton <[email protected]>2010-11-22 17:38:23 -0800
commit3e01b2d529a81ac7b2d7ba3deb5d1f116efc7b34 (patch)
tree25eb2b69c00a4fd73a99e36a8db8ffb0ced2388c
parentRemove the global bindings table in the typechecker (diff)
downloadrust-3e01b2d529a81ac7b2d7ba3deb5d1f116efc7b34.tar.xz
rust-3e01b2d529a81ac7b2d7ba3deb5d1f116efc7b34.zip
rustc: "Expected" and "actual" were swapped. Also un-XFAIL compile-fail/arg-count-mismatch.rs for good measure.
-rw-r--r--src/Makefile10
-rw-r--r--src/comp/middle/typeck.rs32
2 files changed, 26 insertions, 16 deletions
diff --git a/src/Makefile b/src/Makefile
index 74f0dbd1..db21cab1 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -536,6 +536,9 @@ TEST_XFAILS_SELF := $(filter-out \
uint.rs \
unit.rs \
while-and-do-while.rs \
+ ) \
+ $(addprefix test/compile-fail/, \
+ arg-count-mismatch.rs \
), \
$(wildcard test/*/*.rs test/*/*.rc))
@@ -772,6 +775,13 @@ test/compile-fail/%-boot.llvm.out.tmp: test/compile-fail/%.rs $(BREQ)
$(CFG_QUIET)grep --text --quiet \
"`awk -F: '/error-pattern/ { print $$2 }' $< | tr -d '\n\r'`" $@
+test/compile-fail/%.llvm.out.tmp: test/compile-fail/%.rs $(BREQ)
+ @$(call CFG_ECHO, compile [rustc]: $<)
+ $(CFG_QUIET)rm -f $@
+ $(BOOT) -o $(@:.out=$(CFG_EXE_SUFFIX)) $< >$@ 2>&1 || true
+ $(CFG_QUIET)grep --text --quiet \
+ "`awk -F: '/error-pattern/ { print $$2 }' $< | tr -d '\n\r'`" $@
+
test/run-pass/%-boot.x86$(CFG_EXE_SUFFIX): test/run-pass/%.rc $(BREQ)
@$(call CFG_ECHO, compile [boot x86]: $<)
$(BOOT) -o $@ $<
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index 24ae00e0..e8ae94fa 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -821,67 +821,67 @@ fn demand_expr(&fn_ctxt fcx, @ty expected, @ast.expr e) -> @ast.expr {
alt (e.node) {
case (ast.expr_vec(?es, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_vec(es, ast.ann_type(t));
}
case (ast.expr_tup(?es, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_tup(es, ast.ann_type(t));
}
case (ast.expr_rec(?es, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_rec(es, ast.ann_type(t));
}
case (ast.expr_call(?sube, ?es, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_call(sube, es, ast.ann_type(t));
}
case (ast.expr_binary(?bop, ?lhs, ?rhs, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_binary(bop, lhs, rhs, ast.ann_type(t));
}
case (ast.expr_unary(?uop, ?sube, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_unary(uop, sube, ast.ann_type(t));
}
case (ast.expr_lit(?lit, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_lit(lit, ast.ann_type(t));
}
case (ast.expr_cast(?sube, ?ast_ty, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_cast(sube, ast_ty, ast.ann_type(t));
}
case (ast.expr_if(?cond, ?then, ?els, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_if(cond, then, els, ast.ann_type(t));
}
case (ast.expr_while(?cond, ?bloc, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_while(cond, bloc, ast.ann_type(t));
}
case (ast.expr_do_while(?bloc, ?cond, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_do_while(bloc, cond, ast.ann_type(t));
}
case (ast.expr_block(?bloc, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_block(bloc, ast.ann_type(t));
}
case (ast.expr_assign(?lhs, ?rhs, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_assign(lhs, rhs, ast.ann_type(t));
}
case (ast.expr_field(?lhs, ?rhs, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_field(lhs, rhs, ast.ann_type(t));
}
case (ast.expr_index(?base, ?index, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_index(base, index, ast.ann_type(t));
}
case (ast.expr_name(?name, ?d, ?ann)) {
- auto t = demand(fcx, e.span, ann_to_type(ann), expected);
+ auto t = demand(fcx, e.span, expected, ann_to_type(ann));
e_1 = ast.expr_name(name, d, ast.ann_type(t));
}
case (_) {