about summary refs log tree commit diff
path: root/src/comp
diff options
context:
space:
mode:
authorTim Chevalier <chevalier@alum.wellesley.edu>2012-01-19 14:28:58 -0800
committerTim Chevalier <chevalier@alum.wellesley.edu>2012-01-19 14:44:40 -0800
commit94d20635779d83f4f3267ef8a65b9bf5201dd554 (patch)
tree5e9127a1a8ca37aa788f4b56351502a941af4289 /src/comp
parent840a057556dcc68ddb8cb82003419c8a0b3f7cd6 (diff)
downloadrust-94d20635779d83f4f3267ef8a65b9bf5201dd554.tar.gz
rust-94d20635779d83f4f3267ef8a65b9bf5201dd554.zip
Handle log expressions with a _|_-typed level
If we have log(foo, quux) where foo:_|_, just translate foo and
ignore the rest of the expression.

Closes #1459
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/trans.rs6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs
index 9f75d0d1c77..7435c30c5bf 100644
--- a/src/comp/middle/trans.rs
+++ b/src/comp/middle/trans.rs
@@ -3700,7 +3700,13 @@ fn load_if_immediate(cx: @block_ctxt, v: ValueRef, t: ty::t) -> ValueRef {
 fn trans_log(lvl: @ast::expr, cx: @block_ctxt, e: @ast::expr) -> @block_ctxt {
     let ccx = bcx_ccx(cx);
     let lcx = cx.fcx.lcx;
+    let tcx = ccx.tcx;
     let modname = str::connect(lcx.module_path, "::");
+
+    if ty::type_is_bot(tcx, ty::expr_ty(tcx, lvl)) {
+       ret trans_expr(cx, lvl, ignore);
+    }
+
     let global = if lcx.ccx.module_data.contains_key(modname) {
         lcx.ccx.module_data.get(modname)
     } else {