error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:5:5
   |
LL | fn foo() -> impl std::fmt::Display {
   |             ---------------------- expected because this return type...
LL |     if false {
LL |         return 0i32;
   |                ---- ...is found to be `i32` here
LL |     }
LL |     1u32
   |     ^^^^ expected `i32`, found `u32`

error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:13:16
   |
LL | fn bar() -> impl std::fmt::Display {
   |             ---------------------- expected because this return type...
LL |     if false {
LL |         return 0i32;
   |                ---- ...is found to be `i32` here
LL |     } else {
LL |         return 1u32;
   |                ^^^^ expected `i32`, found `u32`

error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:22:9
   |
LL | fn baz() -> impl std::fmt::Display {
   |             ---------------------- expected because this return type...
LL |     if false {
LL |         return 0i32;
   |                ---- ...is found to be `i32` here
LL |     } else {
LL |         1u32
   |         ^^^^ expected `i32`, found `u32`

error[E0308]: if and else have incompatible types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:31:9
   |
LL | /     if false {
LL | |         0i32
   | |         ---- expected because of this
LL | |     } else {
LL | |         1u32
   | |         ^^^^ expected `i32`, found `u32`
LL | |
LL | |     }
   | |_____- if and else have incompatible types

error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:39:14
   |
LL | fn bat() -> impl std::fmt::Display {
   |             ---------------------- expected because this return type...
LL |     match 13 {
LL |         0 => return 0i32,
   |                     ---- ...is found to be `i32` here
LL |         _ => 1u32,
   |              ^^^^ expected `i32`, found `u32`

error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:45:5
   |
LL |   fn can() -> impl std::fmt::Display {
   |               ---------------------- expected because this return type...
LL | /     match 13 {
LL | |
LL | |         0 => return 0i32,
   | |                     ---- ...is found to be `i32` here
LL | |         1 => 1u32,
LL | |         _ => 2u32,
LL | |     }
   | |_____^ expected `i32`, found `u32`

error[E0308]: mismatched types
  --> $DIR/point-to-type-err-cause-on-impl-trait-return.rs:59:13
   |
LL | fn cat() -> impl std::fmt::Display {
   |             ---------------------- expected because this return type...
...
LL |             return 0i32;
   |                    ---- ...is found to be `i32` here
...
LL |             1u32
   |             ^^^^ expected `i32`, found `u32`

error: aborting due to 7 previous errors

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