diff options
| author | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-19 14:28:58 -0800 |
|---|---|---|
| committer | Tim Chevalier <chevalier@alum.wellesley.edu> | 2012-01-19 14:44:40 -0800 |
| commit | 94d20635779d83f4f3267ef8a65b9bf5201dd554 (patch) | |
| tree | 5e9127a1a8ca37aa788f4b56351502a941af4289 | |
| parent | 840a057556dcc68ddb8cb82003419c8a0b3f7cd6 (diff) | |
| download | rust-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
| -rw-r--r-- | src/comp/middle/trans.rs | 6 | ||||
| -rw-r--r-- | src/test/run-fail/issue-1459.rs | 4 |
2 files changed, 10 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 { diff --git a/src/test/run-fail/issue-1459.rs b/src/test/run-fail/issue-1459.rs new file mode 100644 index 00000000000..0fc6d8f697a --- /dev/null +++ b/src/test/run-fail/issue-1459.rs @@ -0,0 +1,4 @@ +// error-pattern:roflcopter +fn main() { + log (fail "roflcopter", 2); +} |
