summaryrefslogtreecommitdiffstats
path: root/tests/ui/rfc-2397-do-not-recommend
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/rfc-2397-do-not-recommend')
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs21
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr25
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/incorrect-locations.rs45
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/incorrect-locations.stderr50
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs10
-rw-r--r--tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr12
6 files changed, 163 insertions, 0 deletions
diff --git a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs
new file mode 100644
index 000000000..5053c115b
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.rs
@@ -0,0 +1,21 @@
+#![feature(do_not_recommend)]
+
+pub trait Foo {
+}
+
+impl Foo for i32 {
+}
+
+pub trait Bar {
+}
+
+#[do_not_recommend]
+impl<T: Foo> Bar for T {
+}
+
+fn stuff<T: Bar>(_: T) {}
+
+fn main() {
+ stuff(1u8);
+ //~^ the trait bound `u8: Foo` is not satisfied
+}
diff --git a/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr
new file mode 100644
index 000000000..a3e559054
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/feature-gate-do_not_recommend.stderr
@@ -0,0 +1,25 @@
+error[E0277]: the trait bound `u8: Foo` is not satisfied
+ --> $DIR/feature-gate-do_not_recommend.rs:19:11
+ |
+LL | stuff(1u8);
+ | ----- ^^^ the trait `Foo` is not implemented for `u8`
+ | |
+ | required by a bound introduced by this call
+ |
+ = help: the trait `Foo` is implemented for `i32`
+note: required for `u8` to implement `Bar`
+ --> $DIR/feature-gate-do_not_recommend.rs:13:14
+ |
+LL | impl<T: Foo> Bar for T {
+ | --- ^^^ ^
+ | |
+ | unsatisfied trait bound introduced here
+note: required by a bound in `stuff`
+ --> $DIR/feature-gate-do_not_recommend.rs:16:13
+ |
+LL | fn stuff<T: Bar>(_: T) {}
+ | ^^^ required by this bound in `stuff`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0277`.
diff --git a/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.rs b/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.rs
new file mode 100644
index 000000000..91863f5e4
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.rs
@@ -0,0 +1,45 @@
+#![feature(do_not_recommend)]
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+const CONST: () = ();
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+static Static: () = ();
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+type Type = ();
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+enum Enum {
+}
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+extern {
+}
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+fn fun() {
+}
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+struct Struct {
+}
+
+#[do_not_recommend]
+//~^ `#[do_not_recommend]` can only be placed
+trait Trait {
+}
+
+#[do_not_recommend]
+impl Trait for i32 {
+}
+
+fn main() {
+}
diff --git a/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.stderr b/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.stderr
new file mode 100644
index 000000000..01ebc23c8
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/incorrect-locations.stderr
@@ -0,0 +1,50 @@
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:3:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:7:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:11:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:15:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:20:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:25:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:30:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: `#[do_not_recommend]` can only be placed on trait implementations
+ --> $DIR/incorrect-locations.rs:35:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 8 previous errors
+
diff --git a/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs
new file mode 100644
index 000000000..f0c5c222e
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.rs
@@ -0,0 +1,10 @@
+trait Foo {
+}
+
+#[do_not_recommend]
+//~^ ERROR the `#[do_not_recommend]` attribute is an experimental feature
+impl Foo for i32 {
+}
+
+fn main() {
+}
diff --git a/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr
new file mode 100644
index 000000000..1597e5be4
--- /dev/null
+++ b/tests/ui/rfc-2397-do-not-recommend/unstable-feature.stderr
@@ -0,0 +1,12 @@
+error[E0658]: the `#[do_not_recommend]` attribute is an experimental feature
+ --> $DIR/unstable-feature.rs:4:1
+ |
+LL | #[do_not_recommend]
+ | ^^^^^^^^^^^^^^^^^^^
+ |
+ = note: see issue #51992 <https://github.com/rust-lang/rust/issues/51992> for more information
+ = help: add `#![feature(do_not_recommend)]` to the crate attributes to enable
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0658`.