error[E0308]: mismatched types --> $DIR/liveness-return-last-stmt-semi.rs:6:19 | LL | fn no_return() -> i32 {} | --------- ^^^ expected `i32`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression error[E0308]: mismatched types --> $DIR/liveness-return-last-stmt-semi.rs:8:19 | LL | fn bar(x: u32) -> u32 { | --- ^^^ expected `u32`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression LL | x * 2; | - help: remove this semicolon to return this value error[E0308]: mismatched types --> $DIR/liveness-return-last-stmt-semi.rs:12:19 | LL | fn baz(x: u64) -> u32 { | --- ^^^ expected `u32`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression error[E0308]: mismatched types --> $DIR/liveness-return-last-stmt-semi.rs:3:41 | LL | macro_rules! test { () => { fn foo() -> i32 { 1; } } } | --- ^^^ expected `i32`, found `()` | | | implicitly returns `()` as its body has no tail or `return` expression ... LL | test!(); | ------- in this macro invocation | = note: this error originates in the macro `test` (in Nightly builds, run with -Z macro-backtrace for more info) error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0308`.