]> git.lizzy.rs Git - rust.git/blobdiff - src/test/compile-fail/static-mut-not-pat.rs
Add support for patterns referencing non-trivial statics
[rust.git] / src / test / compile-fail / static-mut-not-pat.rs
index c410e85655258e161857a9b248d5e5779360e1f4..b3e93daccab8df2288d703eb41692c208b1f6b38 100644 (file)
@@ -20,7 +20,34 @@ fn main() {
     // instead of spitting out a custom error about some identifier collisions
     // (we should allow shadowing)
     match 4i {
-        a => {}
-        _ => {} //~ ERROR: unreachable pattern
+        a => {} //~ ERROR mutable static variables cannot be referenced in a pattern
+        _ => {}
+    }
+}
+
+struct NewBool(bool);
+enum Direction {
+    North,
+    East,
+    South,
+    West
+}
+static NEW_FALSE: NewBool = NewBool(false);
+struct Foo {
+    bar: Option<Direction>,
+    baz: NewBool
+}
+
+static mut STATIC_MUT_FOO: Foo = Foo { bar: Some(West), baz: NEW_FALSE };
+
+fn mutable_statics() {
+    match (Foo { bar: Some(North), baz: NewBool(true) }) {
+        Foo { bar: None, baz: NewBool(true) } => (),
+        STATIC_MUT_FOO => (),
+        //~^ ERROR mutable static variables cannot be referenced in a pattern
+        Foo { bar: Some(South), .. } => (),
+        Foo { bar: Some(EAST), .. } => (),
+        Foo { bar: Some(North), baz: NewBool(true) } => (),
+        Foo { bar: Some(EAST), baz: NewBool(false) } => ()
     }
 }