From 6d2080c44878924bdcde57ec7735327af0ee267d Mon Sep 17 00:00:00 2001 From: Jakub Bukaj Date: Tue, 28 Oct 2014 18:32:05 +0100 Subject: [PATCH] Address review comments --- src/librustc/middle/liveness.rs | 2 ++ src/librustc/middle/trans/callee.rs | 7 ++----- src/librustc/middle/trans/intrinsic.rs | 2 +- src/librustc/util/ppaux.rs | 10 ++++------ 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 3d031c966ae..4e2ee03877c 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -104,6 +104,8 @@ * fallthrough node. It is only live if the function could converge * via means other than an explicit `return` expression. That is, it is * only dead if the end of the function's block can never be reached. + * It is the responsibility of typeck to ensure that there are no + * `return` expressions in a function declared as diverging. */ use middle::def::*; diff --git a/src/librustc/middle/trans/callee.rs b/src/librustc/middle/trans/callee.rs index 045f50bf6b1..54f41b79b01 100644 --- a/src/librustc/middle/trans/callee.rs +++ b/src/librustc/middle/trans/callee.rs @@ -876,11 +876,8 @@ pub fn trans_call_inner<'blk, 'tcx>(bcx: Block<'blk, 'tcx>, _ => {} } - match ret_ty { - ty::FnConverging(_) => {}, - ty::FnDiverging => { - Unreachable(bcx); - } + if ret_ty == ty::FnDiverging { + Unreachable(bcx); } Result::new(bcx, llresult) diff --git a/src/librustc/middle/trans/intrinsic.rs b/src/librustc/middle/trans/intrinsic.rs index 61559e12a97..0ddd4894cfa 100644 --- a/src/librustc/middle/trans/intrinsic.rs +++ b/src/librustc/middle/trans/intrinsic.rs @@ -204,7 +204,7 @@ pub fn trans_intrinsic_call<'blk, 'tcx>(mut bcx: Block<'blk, 'tcx>, node: ast::N fcx.pop_custom_cleanup_scope(cleanup_scope); - // The only intrinsic function that diverges. + // These are the only intrinsic functions that diverge. if name.get() == "abort" { let llfn = ccx.get_intrinsic(&("llvm.trap")); Call(bcx, llfn, [], None); diff --git a/src/librustc/util/ppaux.rs b/src/librustc/util/ppaux.rs index b1f8b2de417..296158dd4a8 100644 --- a/src/librustc/util/ppaux.rs +++ b/src/librustc/util/ppaux.rs @@ -957,12 +957,10 @@ impl Repr for ty::FnSig { impl Repr for ty::FnOutput { fn repr(&self, tcx: &ctxt) -> String { match *self { - ty::FnConverging(ty) => { - format!("FnConverging({0})", ty.repr(tcx)) - } - ty::FnDiverging => { - "FnDiverging".to_string() - } + ty::FnConverging(ty) => + format!("FnConverging({0})", ty.repr(tcx)), + ty::FnDiverging => + "FnDiverging".to_string() } } }