]> git.proxmox.com Git - rustc.git/blobdiff - src/test/compile-fail/empty-struct-unit-pat.rs
Imported Upstream version 1.7.0+dfsg1
[rustc.git] / src / test / compile-fail / empty-struct-unit-pat.rs
index 7e13f539bb0438c37640980e6cea60f34d4fbb30..0f54d1b7365854c99d46c05d3614e55be51b5d57 100644 (file)
 
 // Can't use unit struct as enum pattern
 
+// aux-build:empty-struct.rs
+
 #![feature(rustc_attrs)]
 // remove prior feature after warning cycle and promoting warnings to errors
 #![feature(braced_empty_structs)]
 
-struct Empty1;
+extern crate empty_struct;
+use empty_struct::*;
+
+struct Empty2;
 
 enum E {
-    Empty2
+    Empty4
 }
 
 // remove attribute after warning cycle and promoting warnings to errors
 #[rustc_error]
 fn main() { //~ ERROR: compilation successful
-    let e1 = Empty1;
-    let e2 = E::Empty2;
+    let e2 = Empty2;
+    let e4 = E::Empty4;
+    let xe2 = XEmpty2;
+    let xe4 = XE::XEmpty4;
 
     // Rejected by parser as yet
-    // match e1 {
-    //     Empty1() => () // ERROR `Empty1` does not name a tuple variant or a tuple struct
+    // match e2 {
+    //     Empty2() => () // ERROR `Empty2` does not name a tuple variant or a tuple struct
     // }
-    match e1 {
-        Empty1(..) => () //~ WARN `Empty1` does not name a tuple variant or a tuple struct
+    // match xe2 {
+    //     XEmpty2() => () // ERROR `XEmpty2` does not name a tuple variant or a tuple struct
+    // }
+    match e2 {
+        Empty2(..) => () //~ WARN `Empty2` does not name a tuple variant or a tuple struct
+            //~^ WARN hard error
+    }
+    match xe2 {
+        XEmpty2(..) => () //~ WARN `XEmpty2` does not name a tuple variant or a tuple struct
+            //~^ WARN hard error
     }
     // Rejected by parser as yet
-    // match e2 {
-    //     E::Empty2() => () // ERROR `E::Empty2` does not name a tuple variant or a tuple struct
+    // match e4 {
+    //     E::Empty4() => () // ERROR `E::Empty4` does not name a tuple variant or a tuple struct
     // }
-    match e2 {
-        E::Empty2(..) => () //~ WARN `E::Empty2` does not name a tuple variant or a tuple struct
+    // match xe4 {
+    //     XE::XEmpty4() => (), // ERROR `XE::XEmpty4` does not name a tuple variant or a tuple
+    //     _ => {},
+    // }
+    match e4 {
+        E::Empty4(..) => () //~ WARN `E::Empty4` does not name a tuple variant or a tuple struct
+            //~^ WARN hard error
+    }
+    match xe4 {
+        XE::XEmpty4(..) => (), //~ WARN `XE::XEmpty4` does not name a tuple variant or a tuple
+            //~^ WARN hard error
+        _ => {},
     }
 }