You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This kind of code worked with the original implementation of #![feature(never_type)], but that's because the check for diverging functions that converge was removed from liveness. With that restored, it incorrectly fires here.
<eddyb> and if you want to fix it *separately*, basically have a check like that that
changes succ to be self.s.exit_ln if there's a NeverToAny adjustment for that
expression, here https://github.com/rust-lang/rust/blob/master/src/librustc/middle/liveness.rs#L930
<eddyb> durka42: oh and if you do that separate PR, you can remove the ExprCall and
ExprMethod call is_never checks
Activity
!
to a type (RFC 1216) #35121arielb1 commentedon Aug 29, 2016
You can also skip the check in liveness if the return expression has type
TyNever
- that's how MIR typeck does it.durka commentedon Aug 29, 2016
@arielb1 isn't that the check that we put back in at #35883? If you don't check you end up with
fn foo() -> ! { 42 }
being accepted.Mark-Simulacrum commentedon May 13, 2017
The below is now accepted.
src/test/run-fail/call-fn-never-arg.rs
tests for this.