diff options
| author | Graydon Hoare <[email protected]> | 2010-12-08 15:29:09 -0800 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-12-08 15:29:09 -0800 |
| commit | 2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5 (patch) | |
| tree | cdb523adcb43bf4b3436521715b66048fdd556b5 /src | |
| parent | Add missing case to parse_ty, un-XFAIL cast.rs. (diff) | |
| download | rust-2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5.tar.xz rust-2b36a8eab41a4e323f9c234ff89a46fbe2cd84d5.zip | |
Fix log upcall translation bug. Un-XFAIL rec-auto.rs.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Makefile | 1 | ||||
| -rw-r--r-- | src/comp/middle/trans.rs | 32 |
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 { |