about summary refs log tree commit diff
path: root/tests/ui/issues/issue-5100.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/issues/issue-5100.rs')
-rw-r--r--tests/ui/issues/issue-5100.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/ui/issues/issue-5100.rs b/tests/ui/issues/issue-5100.rs
new file mode 100644
index 00000000000..69ed4b0e432
--- /dev/null
+++ b/tests/ui/issues/issue-5100.rs
@@ -0,0 +1,57 @@
+#![feature(box_patterns)]
+
+
+enum A { B, C }
+
+fn main() {
+    match (true, false) {
+        A::B => (),
+//~^ ERROR mismatched types
+//~| expected tuple, found enum `A`
+//~| expected tuple `(bool, bool)`
+//~| found enum `A`
+        _ => ()
+    }
+
+    match (true, false) {
+        (true, false, false) => ()
+//~^ ERROR mismatched types
+//~| expected a tuple with 2 elements, found one with 3 elements
+//~| expected tuple `(bool, bool)`
+//~| found tuple `(_, _, _)`
+    }
+
+    match (true, false) {
+        (true, false, false) => ()
+//~^ ERROR mismatched types
+//~| expected a tuple with 2 elements, found one with 3 elements
+//~| expected tuple `(bool, bool)`
+//~| found tuple `(_, _, _)`
+    }
+
+    match (true, false) {
+        box (true, false) => ()
+//~^ ERROR mismatched types
+//~| expected tuple `(bool, bool)`
+//~| found struct `Box<_>`
+    }
+
+    match (true, false) {
+        &(true, false) => ()
+//~^ ERROR mismatched types
+//~| expected tuple, found reference
+//~| expected tuple `(bool, bool)`
+//~| found reference `&_`
+    }
+
+
+    let v = [('a', 'b')   //~ ERROR expected function, found `(char, char)`
+             ('c', 'd'),
+             ('e', 'f')];
+
+    for &(x,y) in &v {} // should be OK
+
+    // Make sure none of the errors above were fatal
+    let x: char = true; //~  ERROR mismatched types
+                        //~| expected `char`, found `bool`
+}