error[E0308]: mismatched types
  --> $DIR/liveness-return-last-stmt-semi.rs:4:41
   |
LL | macro_rules! test { () => { fn foo() -> i32 { 1; } } }
   |                                ---      ^^^    - help: consider removing this semicolon
   |                                |        |
   |                                |        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 a macro (in Nightly builds, run with -Z macro-backtrace for more info)

error[E0308]: mismatched types
  --> $DIR/liveness-return-last-stmt-semi.rs:7: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:9: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: consider removing this semicolon

error[E0308]: mismatched types
  --> $DIR/liveness-return-last-stmt-semi.rs:13:19
   |
LL | fn baz(x: u64) -> u32 {
   |    ---            ^^^ expected `u32`, found `()`
   |    |
   |    implicitly returns `()` as its body has no tail or `return` expression

error: aborting due to 4 previous errors

For more information about this error, try `rustc --explain E0308`.
