about summary refs log tree commit diff
path: root/tests/ui/lint/lint-stability-fields-deprecated.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/lint/lint-stability-fields-deprecated.rs')
-rw-r--r--tests/ui/lint/lint-stability-fields-deprecated.rs344
1 files changed, 344 insertions, 0 deletions
diff --git a/tests/ui/lint/lint-stability-fields-deprecated.rs b/tests/ui/lint/lint-stability-fields-deprecated.rs
new file mode 100644
index 00000000000..a5511966d7e
--- /dev/null
+++ b/tests/ui/lint/lint-stability-fields-deprecated.rs
@@ -0,0 +1,344 @@
+// aux-build:lint_stability_fields.rs
+
+#![deny(deprecated)]
+#![allow(dead_code)]
+#![feature(staged_api, unstable_test_feature)]
+
+#![stable(feature = "rust1", since = "1.0.0")]
+
+mod cross_crate {
+    extern crate lint_stability_fields;
+
+    use self::lint_stability_fields::*;
+
+    pub fn foo() {
+        let x = Stable {
+            inherit: 1,
+            override1: 2,
+            override2: 3,
+            //~^ ERROR use of deprecated field
+            override3: 4,
+        };
+
+        let _ = x.inherit;
+        let _ = x.override1;
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+        let _ = x.override3;
+
+        let Stable {
+            inherit: _,
+            override1: _,
+            override2: _,
+            //~^ ERROR use of deprecated field
+            override3: _,
+        } = x;
+        // all fine
+        let Stable { .. } = x;
+
+        let x = Stable2(1, 2, 3, 4);
+
+        let _ = x.0;
+        let _ = x.1;
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+        let _ = x.3;
+
+        let Stable2(_,
+                   _,
+                   _,
+                   //~^ ERROR use of deprecated field
+                   _)
+            = x;
+        // all fine
+        let Stable2(..) = x;
+
+
+        let x = Unstable {
+            inherit: 1,
+            override1: 2,
+            override2: 3,
+            //~^ ERROR use of deprecated field
+        };
+
+        let _ = x.inherit;
+        let _ = x.override1;
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+
+        let Unstable {
+            inherit: _,
+            override1: _,
+            override2: _
+            //~^ ERROR use of deprecated field
+        } = x;
+
+        let Unstable
+            // the patterns are all fine:
+            { .. } = x;
+
+
+        let x = Unstable2(1, 2, 3);
+
+        let _ = x.0;
+        let _ = x.1;
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+
+        let Unstable2
+            (_,
+             _,
+             _)
+            //~^ ERROR use of deprecated field
+            = x;
+        let Unstable2
+            // the patterns are all fine:
+            (..) = x;
+
+
+        let x = Deprecated {
+            //~^ ERROR use of deprecated struct
+            inherit: 1,
+            //~^ ERROR use of deprecated field
+            override1: 2,
+            //~^ ERROR use of deprecated field
+            override2: 3,
+            //~^ ERROR use of deprecated field
+        };
+
+        let _ = x.inherit;
+        //~^ ERROR use of deprecated field
+        let _ = x.override1;
+        //~^ ERROR use of deprecated field
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+
+        let Deprecated {
+            //~^ ERROR use of deprecated struct
+            inherit: _,
+            //~^ ERROR use of deprecated field
+            override1: _,
+            //~^ ERROR use of deprecated field
+            override2: _
+            //~^ ERROR use of deprecated field
+        } = x;
+
+        let Deprecated
+            //~^ ERROR use of deprecated struct
+            // the patterns are all fine:
+            { .. } = x;
+
+        let x = Deprecated2(1, 2, 3);
+        //~^ ERROR use of deprecated tuple struct
+
+        let _ = x.0;
+        //~^ ERROR use of deprecated field
+        let _ = x.1;
+        //~^ ERROR use of deprecated field
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+
+        let Deprecated2
+        //~^ ERROR use of deprecated tuple struct
+            (_,
+             //~^ ERROR use of deprecated field
+             _,
+             //~^ ERROR use of deprecated field
+             _)
+             //~^ ERROR use of deprecated field
+            = x;
+        let Deprecated2
+        //~^ ERROR use of deprecated tuple struct
+            // the patterns are all fine:
+            (..) = x;
+    }
+}
+
+mod this_crate {
+    #[stable(feature = "rust1", since = "1.0.0")]
+    struct Stable {
+        inherit: u8,
+        #[unstable(feature = "unstable_test_feature", issue = "none")]
+        override1: u8,
+        #[deprecated(since = "1.0.0", note = "text")]
+        #[unstable(feature = "unstable_test_feature", issue = "none")]
+        override2: u8,
+    }
+
+    #[stable(feature = "rust1", since = "1.0.0")]
+    struct Stable2(u8,
+                   #[stable(feature = "rust1", since = "1.0.0")] u8,
+                   #[unstable(feature = "unstable_test_feature", issue = "none")]
+                   #[deprecated(since = "1.0.0", note = "text")] u8);
+
+    #[unstable(feature = "unstable_test_feature", issue = "none")]
+    struct Unstable {
+        inherit: u8,
+        #[stable(feature = "rust1", since = "1.0.0")]
+        override1: u8,
+        #[deprecated(since = "1.0.0", note = "text")]
+        #[unstable(feature = "unstable_test_feature", issue = "none")]
+        override2: u8,
+    }
+
+    #[unstable(feature = "unstable_test_feature", issue = "none")]
+    struct Unstable2(u8,
+                     #[stable(feature = "rust1", since = "1.0.0")] u8,
+                     #[unstable(feature = "unstable_test_feature", issue = "none")]
+                     #[deprecated(since = "1.0.0", note = "text")] u8);
+
+    #[unstable(feature = "unstable_test_feature", issue = "none")]
+    #[deprecated(since = "1.0.0", note = "text")]
+    struct Deprecated {
+        inherit: u8,
+        #[stable(feature = "rust1", since = "1.0.0")]
+        override1: u8,
+        #[unstable(feature = "unstable_test_feature", issue = "none")]
+        override2: u8,
+    }
+
+    #[unstable(feature = "unstable_test_feature", issue = "none")]
+    #[deprecated(since = "1.0.0", note = "text")]
+    struct Deprecated2(u8,
+                       #[stable(feature = "rust1", since = "1.0.0")] u8,
+                       #[unstable(feature = "unstable_test_feature", issue = "none")] u8);
+
+    pub fn foo() {
+        let x = Stable {
+            inherit: 1,
+            override1: 2,
+            override2: 3,
+            //~^ ERROR use of deprecated field
+        };
+
+        let _ = x.inherit;
+        let _ = x.override1;
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+
+        let Stable {
+            inherit: _,
+            override1: _,
+            override2: _
+            //~^ ERROR use of deprecated field
+        } = x;
+        // all fine
+        let Stable { .. } = x;
+
+        let x = Stable2(1, 2, 3);
+
+        let _ = x.0;
+        let _ = x.1;
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+
+        let Stable2(_,
+                   _,
+                   _)
+            //~^ ERROR use of deprecated field
+            = x;
+        // all fine
+        let Stable2(..) = x;
+
+
+        let x = Unstable {
+            inherit: 1,
+            override1: 2,
+            override2: 3,
+            //~^ ERROR use of deprecated field
+        };
+
+        let _ = x.inherit;
+        let _ = x.override1;
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+
+        let Unstable {
+            inherit: _,
+            override1: _,
+            override2: _
+            //~^ ERROR use of deprecated field
+        } = x;
+
+        let Unstable
+            // the patterns are all fine:
+            { .. } = x;
+
+
+        let x = Unstable2(1, 2, 3);
+
+        let _ = x.0;
+        let _ = x.1;
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+
+        let Unstable2
+            (_,
+             _,
+             _)
+            //~^ ERROR use of deprecated field
+            = x;
+        let Unstable2
+            // the patterns are all fine:
+            (..) = x;
+
+
+        let x = Deprecated {
+            //~^ ERROR use of deprecated struct
+            inherit: 1,
+            //~^ ERROR use of deprecated field
+            override1: 2,
+            //~^ ERROR use of deprecated field
+            override2: 3,
+            //~^ ERROR use of deprecated field
+        };
+
+        let _ = x.inherit;
+        //~^ ERROR use of deprecated field
+        let _ = x.override1;
+        //~^ ERROR use of deprecated field
+        let _ = x.override2;
+        //~^ ERROR use of deprecated field
+
+        let Deprecated {
+            //~^ ERROR use of deprecated struct
+            inherit: _,
+            //~^ ERROR use of deprecated field
+            override1: _,
+            //~^ ERROR use of deprecated field
+            override2: _
+            //~^ ERROR use of deprecated field
+        } = x;
+
+        let Deprecated
+            //~^ ERROR use of deprecated struct
+            // the patterns are all fine:
+            { .. } = x;
+
+        let x = Deprecated2(1, 2, 3);
+        //~^ ERROR use of deprecated tuple struct
+
+        let _ = x.0;
+        //~^ ERROR use of deprecated field
+        let _ = x.1;
+        //~^ ERROR use of deprecated field
+        let _ = x.2;
+        //~^ ERROR use of deprecated field
+
+        let Deprecated2
+        //~^ ERROR use of deprecated tuple struct
+            (_,
+             //~^ ERROR use of deprecated field
+             _,
+             //~^ ERROR use of deprecated field
+             _)
+            //~^ ERROR use of deprecated field
+            = x;
+        let Deprecated2
+        //~^ ERROR use of deprecated tuple struct
+            // the patterns are all fine:
+            (..) = x;
+    }
+}
+
+fn main() {}