Fix log upcall translation bug. Un-XFAIL rec-auto.rs.

This commit is contained in:
Graydon Hoare 2010-12-08 15:29:09 -08:00
parent 6ccfba34f3
commit 2b36a8eab4
2 changed files with 13 additions and 20 deletions

View File

@ -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 \

View File

@ -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 {