aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGraydon Hoare <[email protected]>2010-12-08 15:29:09 -0800
committerGraydon Hoare <[email protected]>2010-12-08 15:29:09 -0800
commit2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5 (patch)
treecdb523adcb43bf4b3436521715b66048fdd556b5
parentAdd missing case to parse_ty, un-XFAIL cast.rs. (diff)
downloadrust-2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5.tar.xz
rust-2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5.zip
Fix log upcall translation bug. Un-XFAIL rec-auto.rs.
-rw-r--r--src/Makefile1
-rw-r--r--src/comp/middle/trans.rs32
2 files changed, 13 insertions, 20 deletions
diff --git a/src/Makefile b/src/Makefile
index cd3ce635..2a41351d 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -544,6 +544,7 @@ TEST_XFAILS_SELF := $(filter-out \
multiline-comment.rs \
readalias.rs \
rec.rs \
+ rec-auto.rs \
rec-tup.rs \
return-nil.rs \
tup.rs \
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index c5cc2063..5e96f58e 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -1547,31 +1547,23 @@ fn load_non_structural(@block_ctxt cx,
}
impure fn trans_log(@block_ctxt cx, @ast.expr e) -> result {
- alt (e.node) {
- case (ast.expr_lit(?lit, _)) {
- alt (lit.node) {
- case (ast.lit_str(_)) {
- auto sub = trans_expr(cx, e);
- auto v = sub.bcx.build.PtrToInt(sub.val, T_int());
- ret trans_upcall(sub.bcx,
- "upcall_log_str",
- vec(v));
- }
- case (_) {
- auto sub = trans_expr(cx, e);
- ret trans_upcall(sub.bcx,
- "upcall_log_int",
- vec(sub.val));
- }
- }
+ auto sub = trans_expr(cx, e);
+ auto e_ty = typeck.expr_ty(e);
+ alt (e_ty.struct) {
+ case (typeck.ty_str) {
+ auto v = sub.bcx.build.PtrToInt(sub.val, T_int());
+ ret trans_upcall(sub.bcx,
+ "upcall_log_str",
+ vec(v));
}
-
case (_) {
- auto sub = trans_expr(cx, e);
- ret trans_upcall(sub.bcx, "upcall_log_int", vec(sub.val));
+ ret trans_upcall(sub.bcx,
+ "upcall_log_int",
+ vec(sub.val));
}
}
+ fail;
}
impure fn trans_check_expr(@block_ctxt cx, @ast.expr e) -> result {