Skip to content

Commit 2b36a8e

Browse files
committed
Fix log upcall translation bug. Un-XFAIL rec-auto.rs.
1 parent 6ccfba3 commit 2b36a8e

File tree

2 files changed

+13
-20
lines changed

2 files changed

+13
-20
lines changed

src/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,7 @@ TEST_XFAILS_SELF := $(filter-out \
544544
multiline-comment.rs \
545545
readalias.rs \
546546
rec.rs \
547+
rec-auto.rs \
547548
rec-tup.rs \
548549
return-nil.rs \
549550
tup.rs \

src/comp/middle/trans.rs

Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1547,31 +1547,23 @@ fn load_non_structural(@block_ctxt cx,
15471547
}
15481548

15491549
impure fn trans_log(@block_ctxt cx, @ast.expr e) -> result {
1550-
alt (e.node) {
1551-
case (ast.expr_lit(?lit, _)) {
1552-
alt (lit.node) {
1553-
case (ast.lit_str(_)) {
1554-
auto sub = trans_expr(cx, e);
1555-
auto v = sub.bcx.build.PtrToInt(sub.val, T_int());
1556-
ret trans_upcall(sub.bcx,
1557-
"upcall_log_str",
1558-
vec(v));
1559-
}
15601550

1561-
case (_) {
1562-
auto sub = trans_expr(cx, e);
1563-
ret trans_upcall(sub.bcx,
1564-
"upcall_log_int",
1565-
vec(sub.val));
1566-
}
1567-
}
1551+
auto sub = trans_expr(cx, e);
1552+
auto e_ty = typeck.expr_ty(e);
1553+
alt (e_ty.struct) {
1554+
case (typeck.ty_str) {
1555+
auto v = sub.bcx.build.PtrToInt(sub.val, T_int());
1556+
ret trans_upcall(sub.bcx,
1557+
"upcall_log_str",
1558+
vec(v));
15681559
}
1569-
15701560
case (_) {
1571-
auto sub = trans_expr(cx, e);
1572-
ret trans_upcall(sub.bcx, "upcall_log_int", vec(sub.val));
1561+
ret trans_upcall(sub.bcx,
1562+
"upcall_log_int",
1563+
vec(sub.val));
15731564
}
15741565
}
1566+
fail;
15751567
}
15761568

15771569
impure fn trans_check_expr(@block_ctxt cx, @ast.expr e) -> result {

0 commit comments

Comments
 (0)