error[E0308]: mismatched types --> $DIR/liveness-forgot-ret.rs:4:19 | LL | fn f(a: isize) -> isize { if god_exists(a) { return 5; }; } | - ^^^^^ expected `isize`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression | help: consider returning the local binding `a` | LL | fn f(a: isize) -> isize { if god_exists(a) { return 5; }; a } | + warning: function cannot return without recursing --> $DIR/liveness-forgot-ret.rs:1:1 | LL | fn god_exists(a: isize) -> bool { return god_exists(a); } | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------- recursive call site | | | cannot return without recursing | = help: a `loop` may express intention better if this is on purpose = note: `#[warn(unconditional_recursion)]` on by default error: aborting due to 1 previous error; 1 warning emitted For more information about this error, try `rustc --explain E0308`.