summaryrefslogtreecommitdiffstats
path: root/src/test/ui/match/match-type-err-first-arm.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/match/match-type-err-first-arm.rs')
-rw-r--r--src/test/ui/match/match-type-err-first-arm.rs50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/test/ui/match/match-type-err-first-arm.rs b/src/test/ui/match/match-type-err-first-arm.rs
new file mode 100644
index 000000000..e9027eb24
--- /dev/null
+++ b/src/test/ui/match/match-type-err-first-arm.rs
@@ -0,0 +1,50 @@
+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 `()`
+ };
+}