summaryrefslogtreecommitdiffstats
path: root/src/test/ui/lint/lint-stability-fields-deprecated.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/lint/lint-stability-fields-deprecated.rs')
-rw-r--r--src/test/ui/lint/lint-stability-fields-deprecated.rs344
1 files changed, 344 insertions, 0 deletions
diff --git a/src/test/ui/lint/lint-stability-fields-deprecated.rs b/src/test/ui/lint/lint-stability-fields-deprecated.rs
new file mode 100644
index 000000000..a5511966d
--- /dev/null
+++ b/src/test/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() {}