]> git.proxmox.com Git - rustc.git/blobdiff - src/test/compile-fail/lint-dead-code-4.rs
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / test / compile-fail / lint-dead-code-4.rs
index 8e37dd805d56d14fdee1a6f7d8fdee4afcbd1eda..20cd13c1875d6a0be41d4e736fc21d8901584465 100644 (file)
@@ -25,12 +25,41 @@ enum XYZ {
     X, //~ ERROR variant is never used
     Y { //~ ERROR variant is never used
         a: String,
-        b: i32, //~ ERROR: struct field is never used
-        c: i32, //~ ERROR: struct field is never used
+        b: i32,
+        c: i32,
     },
     Z
 }
 
+enum ABC { //~ ERROR enum is never used
+    A,
+    B {
+        a: String,
+        b: i32,
+        c: i32,
+    },
+    C
+}
+
+// ensure struct variants get warning for their fields
+enum IJK {
+    I, //~ ERROR variant is never used
+    J {
+        a: String,
+        b: i32, //~ ERROR struct field is never used
+        c: i32, //~ ERROR struct field is never used
+    },
+    K //~ ERROR variant is never used
+
+}
+
+fn struct_variant_partial_use(b: IJK) -> String {
+    match b {
+        IJK::J { a, b: _, .. } => a,
+        _ => "".to_string()
+    }
+}
+
 fn field_match_in_patterns(b: XYZ) -> String {
     match b {
         XYZ::Y { a, b: _, .. } => a,
@@ -58,6 +87,7 @@ fn field_match_in_let(f: Bar) -> bool {
 fn main() {
     field_read(Foo { x: 1, b: false });
     field_match_in_patterns(XYZ::Z);
+    struct_variant_partial_use(IJK::J { a: "".into(), b: 1, c: -1 });
     field_match_in_let(Bar { x: 42, b: true, c: false, _guard: () });
     let _ = Baz { x: 0 };
 }