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`.