diff --git a/src/comp/middle/trans_uniq.rs b/src/comp/middle/trans_uniq.rs index 5bae18731e7d..68e9117de011 100644 --- a/src/comp/middle/trans_uniq.rs +++ b/src/comp/middle/trans_uniq.rs @@ -31,6 +31,13 @@ fn trans_uniq(cx: @block_ctxt, contents: @ast::expr, bcx = lv.bcx; let uniq_ty = node_id_type(bcx_ccx(cx), node_id); + + if ty::type_is_bot(bcx_tcx(bcx), uniq_ty) { + // FIXME: Seems to work, obviously not 'right'. Story of my life. + // Probably works because the builder turns lv.val into undef + ret rslt(bcx, lv.val); + } + check type_is_unique_box(bcx, uniq_ty); let content_ty = content_ty(bcx, uniq_ty); let {bcx, val: llptr} = alloc_uniq(bcx, uniq_ty); diff --git a/src/test/run-fail/unique-fail.rs b/src/test/run-fail/unique-fail.rs new file mode 100644 index 000000000000..9160d08d9d8d --- /dev/null +++ b/src/test/run-fail/unique-fail.rs @@ -0,0 +1,2 @@ +// error-pattern: fail +fn main() { ~fail; }