diff options
Diffstat (limited to 'src/comp/middle/trans.rs')
| -rw-r--r-- | src/comp/middle/trans.rs | 32 |
1 files changed, 12 insertions, 20 deletions
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 { |