From 3e25444e5194fef5a06fb82e1c7726f66c705c88 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Thu, 19 Jan 2012 13:29:26 -0800 Subject: [PATCH] In trans, allow _|_-typed things to be the argument to fail Rationale: _|_-typed things diverge, so it's safe to use them in any context. Closes #1465 --- src/comp/middle/trans.rs | 2 +- src/test/run-fail/do-while-fail.rs | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 src/test/run-fail/do-while-fail.rs diff --git a/src/comp/middle/trans.rs b/src/comp/middle/trans.rs index c519461887dc..92a37ab36d91 100644 --- a/src/comp/middle/trans.rs +++ b/src/comp/middle/trans.rs @@ -3775,7 +3775,7 @@ fn trans_fail_expr(bcx: @block_ctxt, sp_opt: option::t, bcx, expr_res.val, type_of_or_i8( bcx, ty::mk_mach_uint(tcx, ast::ty_u8))); ret trans_fail_value(bcx, sp_opt, data); - } else if bcx.unreachable { + } else if bcx.unreachable || ty::type_is_bot(tcx, e_ty) { ret bcx; } else { bcx_ccx(bcx).sess.span_bug( diff --git a/src/test/run-fail/do-while-fail.rs b/src/test/run-fail/do-while-fail.rs new file mode 100644 index 000000000000..38c6d38f309c --- /dev/null +++ b/src/test/run-fail/do-while-fail.rs @@ -0,0 +1,4 @@ +// error-pattern:giraffe +fn main() { + fail do { fail "giraffe" } while true; +}