| fn main() { |
| let _ = test_func1(1); |
| let _ = test_func2(1); |
| } |
| |
| fn test_func1(n: i32) -> i32 { //~ NOTE expected `i32` because of return type |
| match n { |
| 12 => 'b', |
| //~^ ERROR mismatched types |
| //~| NOTE expected `i32`, found `char` |
| _ => 42, |
| } |
| } |
| |
| fn test_func2(n: i32) -> i32 { |
| let x = match n { //~ NOTE `match` arms have incompatible types |
| 12 => 'b', //~ NOTE this is found to be of type `char` |
| _ => 42, |
| //~^ ERROR `match` arms have incompatible types |
| //~| NOTE expected `char`, found integer |
| }; |
| x |
| } |
| |
| fn test_func3(n: i32) -> i32 { |
| let x = match n { //~ NOTE `match` arms have incompatible types |
| 1 => 'b', |
| 2 => 'b', |
| 3 => 'b', |
| 4 => 'b', |
| 5 => 'b', |
| 6 => 'b', |
| //~^ NOTE this and all prior arms are found to be of type `char` |
| _ => 42, |
| //~^ ERROR `match` arms have incompatible types |
| //~| NOTE expected `char`, found integer |
| }; |
| x |
| } |
| |
| fn test_func4() { |
| match Some(0u32) { //~ NOTE `match` arms have incompatible types |
| Some(x) => { |
| x //~ NOTE this is found to be of type `u32` |
| }, |
| None => {} |
| //~^ ERROR `match` arms have incompatible types |
| //~| NOTE expected `u32`, found `()` |
| }; |
| } |