summaryrefslogtreecommitdiffstats
path: root/src/test/ui/auto-traits
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-17 12:19:13 +0000
commit218caa410aa38c29984be31a5229b9fa717560ee (patch)
treec54bd55eeb6e4c508940a30e94c0032fbd45d677 /src/test/ui/auto-traits
parentReleasing progress-linux version 1.67.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-218caa410aa38c29984be31a5229b9fa717560ee.tar.xz
rustc-218caa410aa38c29984be31a5229b9fa717560ee.zip
Merging upstream version 1.68.2+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/test/ui/auto-traits')
-rw-r--r--src/test/ui/auto-traits/auto-is-contextual.rs18
-rw-r--r--src/test/ui/auto-traits/auto-trait-projection-recursion.rs34
-rw-r--r--src/test/ui/auto-traits/auto-trait-validation.fixed13
-rw-r--r--src/test/ui/auto-traits/auto-trait-validation.rs13
-rw-r--r--src/test/ui/auto-traits/auto-trait-validation.stderr37
-rw-r--r--src/test/ui/auto-traits/auto-traits.rs32
-rw-r--r--src/test/ui/auto-traits/bad-generics-on-dyn.rs11
-rw-r--r--src/test/ui/auto-traits/bad-generics-on-dyn.stderr11
-rw-r--r--src/test/ui/auto-traits/issue-23080-2.rs13
-rw-r--r--src/test/ui/auto-traits/issue-23080-2.stderr11
-rw-r--r--src/test/ui/auto-traits/issue-23080.rs17
-rw-r--r--src/test/ui/auto-traits/issue-23080.stderr14
-rw-r--r--src/test/ui/auto-traits/issue-84075.rs16
-rw-r--r--src/test/ui/auto-traits/issue-84075.stderr11
-rw-r--r--src/test/ui/auto-traits/suspicious-impls-lint.rs50
-rw-r--r--src/test/ui/auto-traits/suspicious-impls-lint.stderr82
-rw-r--r--src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs16
-rw-r--r--src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr19
-rw-r--r--src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs39
-rw-r--r--src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr11
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs19
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr16
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs23
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr15
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs29
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr27
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs21
-rw-r--r--src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr21
28 files changed, 0 insertions, 639 deletions
diff --git a/src/test/ui/auto-traits/auto-is-contextual.rs b/src/test/ui/auto-traits/auto-is-contextual.rs
deleted file mode 100644
index a2ddd5374..000000000
--- a/src/test/ui/auto-traits/auto-is-contextual.rs
+++ /dev/null
@@ -1,18 +0,0 @@
-// run-pass
-
-#![allow(path_statements)]
-#![allow(dead_code)]
-macro_rules! auto {
- () => (struct S;)
-}
-
-auto!();
-
-fn auto() {}
-
-fn main() {
- auto();
- let auto = 10;
- auto;
- auto as u8;
-}
diff --git a/src/test/ui/auto-traits/auto-trait-projection-recursion.rs b/src/test/ui/auto-traits/auto-trait-projection-recursion.rs
deleted file mode 100644
index a36f26f02..000000000
--- a/src/test/ui/auto-traits/auto-trait-projection-recursion.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Checking the `Send` bound in `main` requires:
-//
-// checking <C<'static> as Y>::P: Send
-// which normalizes to Box<X<C<'?1>>>: Send
-// which needs X<C<'?1>>: Send
-// which needs <C<'?1> as Y>::P: Send
-//
-// At this point we used to normalize the predicate to `Box<X<C<'?2>>>: Send`
-// and continue in a loop where we created new region variables to the
-// recursion limit. To avoid this we now "canonicalize" region variables to
-// lowest unified region vid. This means we instead have to prove
-// `Box<X<C<'?1>>>: Send`, which we can because auto traits are coinductive.
-
-// check-pass
-
-// Avoid a really long error message if this regresses.
-#![recursion_limit="20"]
-
-trait Y {
- type P;
-}
-
-impl<'a> Y for C<'a> {
- type P = Box<X<C<'a>>>;
-}
-
-struct C<'a>(&'a ());
-struct X<T: Y>(T::P);
-
-fn is_send<S: Send>() {}
-
-fn main() {
- is_send::<X<C<'static>>>();
-}
diff --git a/src/test/ui/auto-traits/auto-trait-validation.fixed b/src/test/ui/auto-traits/auto-trait-validation.fixed
deleted file mode 100644
index da878ac62..000000000
--- a/src/test/ui/auto-traits/auto-trait-validation.fixed
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(auto_traits)]
-
-// run-rustfix
-
-auto trait Generic {}
-//~^ auto traits cannot have generic parameters [E0567]
-auto trait Bound {}
-//~^ auto traits cannot have super traits or lifetime bounds [E0568]
-auto trait LifetimeBound {}
-//~^ auto traits cannot have super traits or lifetime bounds [E0568]
-auto trait MyTrait { }
-//~^ auto traits cannot have associated items [E0380]
-fn main() {}
diff --git a/src/test/ui/auto-traits/auto-trait-validation.rs b/src/test/ui/auto-traits/auto-trait-validation.rs
deleted file mode 100644
index d43055e27..000000000
--- a/src/test/ui/auto-traits/auto-trait-validation.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(auto_traits)]
-
-// run-rustfix
-
-auto trait Generic<T> {}
-//~^ auto traits cannot have generic parameters [E0567]
-auto trait Bound : Copy {}
-//~^ auto traits cannot have super traits or lifetime bounds [E0568]
-auto trait LifetimeBound : 'static {}
-//~^ auto traits cannot have super traits or lifetime bounds [E0568]
-auto trait MyTrait { fn foo() {} }
-//~^ auto traits cannot have associated items [E0380]
-fn main() {}
diff --git a/src/test/ui/auto-traits/auto-trait-validation.stderr b/src/test/ui/auto-traits/auto-trait-validation.stderr
deleted file mode 100644
index 2c380e5b0..000000000
--- a/src/test/ui/auto-traits/auto-trait-validation.stderr
+++ /dev/null
@@ -1,37 +0,0 @@
-error[E0567]: auto traits cannot have generic parameters
- --> $DIR/auto-trait-validation.rs:5:19
- |
-LL | auto trait Generic<T> {}
- | -------^^^ help: remove the parameters
- | |
- | auto trait cannot have generic parameters
-
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/auto-trait-validation.rs:7:17
- |
-LL | auto trait Bound : Copy {}
- | -----^^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/auto-trait-validation.rs:9:25
- |
-LL | auto trait LifetimeBound : 'static {}
- | -------------^^^^^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error[E0380]: auto traits cannot have associated items
- --> $DIR/auto-trait-validation.rs:11:25
- |
-LL | auto trait MyTrait { fn foo() {} }
- | ------- ---^^^-----
- | | |
- | | help: remove these associated items
- | auto trait cannot have associated items
-
-error: aborting due to 4 previous errors
-
-Some errors have detailed explanations: E0380, E0567, E0568.
-For more information about an error, try `rustc --explain E0380`.
diff --git a/src/test/ui/auto-traits/auto-traits.rs b/src/test/ui/auto-traits/auto-traits.rs
deleted file mode 100644
index 7b52d9c17..000000000
--- a/src/test/ui/auto-traits/auto-traits.rs
+++ /dev/null
@@ -1,32 +0,0 @@
-// run-pass
-#![allow(unused_doc_comments)]
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait Auto {}
-unsafe auto trait AutoUnsafe {}
-
-impl !Auto for bool {}
-impl !AutoUnsafe for bool {}
-
-struct AutoBool(#[allow(unused_tuple_struct_fields)] bool);
-
-impl Auto for AutoBool {}
-unsafe impl AutoUnsafe for AutoBool {}
-
-fn take_auto<T: Auto>(_: T) {}
-fn take_auto_unsafe<T: AutoUnsafe>(_: T) {}
-
-fn main() {
- // Parse inside functions.
- auto trait AutoInner {}
- unsafe auto trait AutoUnsafeInner {}
-
- take_auto(0);
- take_auto(AutoBool(true));
- take_auto_unsafe(0);
- take_auto_unsafe(AutoBool(true));
-
- /// Auto traits are allowed in trait object bounds.
- let _: &(dyn Send + Auto) = &0;
-}
diff --git a/src/test/ui/auto-traits/bad-generics-on-dyn.rs b/src/test/ui/auto-traits/bad-generics-on-dyn.rs
deleted file mode 100644
index 3f8ac14c7..000000000
--- a/src/test/ui/auto-traits/bad-generics-on-dyn.rs
+++ /dev/null
@@ -1,11 +0,0 @@
-#![feature(auto_traits)]
-
-auto trait Trait1<'a> {}
-//~^ ERROR auto traits cannot have generic parameters
-
-fn f<'a>(x: &dyn Trait1<'a>)
-{}
-
-fn main() {
- f(&1);
-}
diff --git a/src/test/ui/auto-traits/bad-generics-on-dyn.stderr b/src/test/ui/auto-traits/bad-generics-on-dyn.stderr
deleted file mode 100644
index ade69ced6..000000000
--- a/src/test/ui/auto-traits/bad-generics-on-dyn.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0567]: auto traits cannot have generic parameters
- --> $DIR/bad-generics-on-dyn.rs:3:18
- |
-LL | auto trait Trait1<'a> {}
- | ------^^^^ help: remove the parameters
- | |
- | auto trait cannot have generic parameters
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0567`.
diff --git a/src/test/ui/auto-traits/issue-23080-2.rs b/src/test/ui/auto-traits/issue-23080-2.rs
deleted file mode 100644
index cb4cf6de1..000000000
--- a/src/test/ui/auto-traits/issue-23080-2.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-unsafe auto trait Trait {
- type Output; //~ ERROR E0380
-}
-
-fn call_method<T: Trait>(x: T) {}
-
-fn main() {
- // ICE
- call_method(());
-}
diff --git a/src/test/ui/auto-traits/issue-23080-2.stderr b/src/test/ui/auto-traits/issue-23080-2.stderr
deleted file mode 100644
index 267a712f6..000000000
--- a/src/test/ui/auto-traits/issue-23080-2.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0380]: auto traits cannot have associated items
- --> $DIR/issue-23080-2.rs:5:10
- |
-LL | unsafe auto trait Trait {
- | ----- auto trait cannot have associated items
-LL | type Output;
- | -----^^^^^^- help: remove these associated items
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0380`.
diff --git a/src/test/ui/auto-traits/issue-23080.rs b/src/test/ui/auto-traits/issue-23080.rs
deleted file mode 100644
index 84e2ce66f..000000000
--- a/src/test/ui/auto-traits/issue-23080.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-unsafe auto trait Trait {
- fn method(&self) { //~ ERROR E0380
- println!("Hello");
- }
-}
-
-fn call_method<T: Trait>(x: T) {
- x.method();
-}
-
-fn main() {
- // ICE
- call_method(());
-}
diff --git a/src/test/ui/auto-traits/issue-23080.stderr b/src/test/ui/auto-traits/issue-23080.stderr
deleted file mode 100644
index c1b16b2f4..000000000
--- a/src/test/ui/auto-traits/issue-23080.stderr
+++ /dev/null
@@ -1,14 +0,0 @@
-error[E0380]: auto traits cannot have associated items
- --> $DIR/issue-23080.rs:5:8
- |
-LL | unsafe auto trait Trait {
- | ----- auto trait cannot have associated items
-LL | fn method(&self) {
- | _____- ^^^^^^
-LL | | println!("Hello");
-LL | | }
- | |_____- help: remove these associated items
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0380`.
diff --git a/src/test/ui/auto-traits/issue-84075.rs b/src/test/ui/auto-traits/issue-84075.rs
deleted file mode 100644
index a6afe24ea..000000000
--- a/src/test/ui/auto-traits/issue-84075.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-// Regression test for issue #84075.
-
-#![feature(auto_traits)]
-
-auto trait Magic where Self: Copy {} //~ ERROR E0568
-impl<T: Magic> Magic for T {}
-
-fn copy<T: Magic>(x: T) -> (T, T) { (x, x) }
-
-#[derive(Debug)]
-struct NoClone;
-
-fn main() {
- let (a, b) = copy(NoClone);
- println!("{:?} {:?}", a, b);
-}
diff --git a/src/test/ui/auto-traits/issue-84075.stderr b/src/test/ui/auto-traits/issue-84075.stderr
deleted file mode 100644
index 02dca598e..000000000
--- a/src/test/ui/auto-traits/issue-84075.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/issue-84075.rs:5:18
- |
-LL | auto trait Magic where Self: Copy {}
- | ----- ^^^^^^^^^^^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0568`.
diff --git a/src/test/ui/auto-traits/suspicious-impls-lint.rs b/src/test/ui/auto-traits/suspicious-impls-lint.rs
deleted file mode 100644
index 7712e84f4..000000000
--- a/src/test/ui/auto-traits/suspicious-impls-lint.rs
+++ /dev/null
@@ -1,50 +0,0 @@
-#![deny(suspicious_auto_trait_impls)]
-
-use std::marker::PhantomData;
-
-struct MayImplementSendOk<T>(T);
-unsafe impl<T: Send> Send for MayImplementSendOk<T> {} // ok
-
-struct MayImplementSendErr<T>(T);
-unsafe impl<T: Send> Send for MayImplementSendErr<&T> {}
-//~^ ERROR
-//~| WARNING this will change its meaning
-
-struct ContainsNonSendDirect<T>(*const T);
-unsafe impl<T: Send> Send for ContainsNonSendDirect<&T> {} // ok
-
-struct ContainsPtr<T>(*const T);
-struct ContainsIndirectNonSend<T>(ContainsPtr<T>);
-unsafe impl<T: Send> Send for ContainsIndirectNonSend<&T> {} // ok
-
-struct ContainsVec<T>(Vec<T>);
-unsafe impl Send for ContainsVec<i32> {}
-//~^ ERROR
-//~| WARNING this will change its meaning
-
-struct TwoParams<T, U>(T, U);
-unsafe impl<T: Send, U: Send> Send for TwoParams<T, U> {} // ok
-
-struct TwoParamsFlipped<T, U>(T, U);
-unsafe impl<T: Send, U: Send> Send for TwoParamsFlipped<U, T> {} // ok
-
-struct TwoParamsSame<T, U>(T, U);
-unsafe impl<T: Send> Send for TwoParamsSame<T, T> {}
-//~^ ERROR
-//~| WARNING this will change its meaning
-
-pub struct WithPhantomDataNonSend<T, U>(PhantomData<*const T>, U);
-unsafe impl<T> Send for WithPhantomDataNonSend<T, i8> {} // ok
-
-pub struct WithPhantomDataSend<T, U>(PhantomData<T>, U);
-unsafe impl<T> Send for WithPhantomDataSend<*const T, i8> {}
-//~^ ERROR
-//~| WARNING this will change its meaning
-
-pub struct WithLifetime<'a, T>(&'a (), T);
-unsafe impl<T> Send for WithLifetime<'static, T> {} // ok
-unsafe impl<T> Sync for WithLifetime<'static, Vec<T>> {}
-//~^ ERROR
-//~| WARNING this will change its meaning
-
-fn main() {}
diff --git a/src/test/ui/auto-traits/suspicious-impls-lint.stderr b/src/test/ui/auto-traits/suspicious-impls-lint.stderr
deleted file mode 100644
index 9cd4e79f8..000000000
--- a/src/test/ui/auto-traits/suspicious-impls-lint.stderr
+++ /dev/null
@@ -1,82 +0,0 @@
-error: cross-crate traits with a default impl, like `Send`, should not be specialized
- --> $DIR/suspicious-impls-lint.rs:9:1
- |
-LL | unsafe impl<T: Send> Send for MayImplementSendErr<&T> {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = warning: this will change its meaning in a future release!
- = note: for more information, see issue #93367 <https://github.com/rust-lang/rust/issues/93367>
- = note: `&T` is not a generic parameter
-note: try using the same sequence of generic parameters as the struct definition
- --> $DIR/suspicious-impls-lint.rs:8:1
- |
-LL | struct MayImplementSendErr<T>(T);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-note: the lint level is defined here
- --> $DIR/suspicious-impls-lint.rs:1:9
- |
-LL | #![deny(suspicious_auto_trait_impls)]
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: cross-crate traits with a default impl, like `Send`, should not be specialized
- --> $DIR/suspicious-impls-lint.rs:21:1
- |
-LL | unsafe impl Send for ContainsVec<i32> {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = warning: this will change its meaning in a future release!
- = note: for more information, see issue #93367 <https://github.com/rust-lang/rust/issues/93367>
- = note: `i32` is not a generic parameter
-note: try using the same sequence of generic parameters as the struct definition
- --> $DIR/suspicious-impls-lint.rs:20:1
- |
-LL | struct ContainsVec<T>(Vec<T>);
- | ^^^^^^^^^^^^^^^^^^^^^
-
-error: cross-crate traits with a default impl, like `Send`, should not be specialized
- --> $DIR/suspicious-impls-lint.rs:32:1
- |
-LL | unsafe impl<T: Send> Send for TwoParamsSame<T, T> {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = warning: this will change its meaning in a future release!
- = note: for more information, see issue #93367 <https://github.com/rust-lang/rust/issues/93367>
- = note: `T` is mentioned multiple times
-note: try using the same sequence of generic parameters as the struct definition
- --> $DIR/suspicious-impls-lint.rs:31:1
- |
-LL | struct TwoParamsSame<T, U>(T, U);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: cross-crate traits with a default impl, like `Send`, should not be specialized
- --> $DIR/suspicious-impls-lint.rs:40:1
- |
-LL | unsafe impl<T> Send for WithPhantomDataSend<*const T, i8> {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = warning: this will change its meaning in a future release!
- = note: for more information, see issue #93367 <https://github.com/rust-lang/rust/issues/93367>
- = note: `*const T` is not a generic parameter
-note: try using the same sequence of generic parameters as the struct definition
- --> $DIR/suspicious-impls-lint.rs:39:1
- |
-LL | pub struct WithPhantomDataSend<T, U>(PhantomData<T>, U);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: cross-crate traits with a default impl, like `Sync`, should not be specialized
- --> $DIR/suspicious-impls-lint.rs:46:1
- |
-LL | unsafe impl<T> Sync for WithLifetime<'static, Vec<T>> {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- |
- = warning: this will change its meaning in a future release!
- = note: for more information, see issue #93367 <https://github.com/rust-lang/rust/issues/93367>
- = note: `Vec<T>` is not a generic parameter
-note: try using the same sequence of generic parameters as the struct definition
- --> $DIR/suspicious-impls-lint.rs:44:1
- |
-LL | pub struct WithLifetime<'a, T>(&'a (), T);
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-error: aborting due to 5 previous errors
-
diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs b/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs
deleted file mode 100644
index 98359ef51..000000000
--- a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs
+++ /dev/null
@@ -1,16 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait Magic : Sized where Option<Self> : Magic {} //~ ERROR E0568
-//~^ ERROR E0568
-impl<T:Magic> Magic for T {}
-
-fn copy<T: Magic>(x: T) -> (T, T) { (x, x) }
-
-#[derive(Debug)]
-struct NoClone;
-
-fn main() {
- let (a, b) = copy(NoClone);
- println!("{:?} {:?}", a, b);
-}
diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr b/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr
deleted file mode 100644
index 4827916fa..000000000
--- a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr
+++ /dev/null
@@ -1,19 +0,0 @@
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/typeck-auto-trait-no-supertraits-2.rs:4:17
- |
-LL | auto trait Magic : Sized where Option<Self> : Magic {}
- | -----^^^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/typeck-auto-trait-no-supertraits-2.rs:4:26
- |
-LL | auto trait Magic : Sized where Option<Self> : Magic {}
- | ----- ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0568`.
diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs b/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs
deleted file mode 100644
index 2a76893fe..000000000
--- a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs
+++ /dev/null
@@ -1,39 +0,0 @@
-// This test is for #29859, we need to ensure auto traits,
-// (also known previously as default traits), do not have
-// supertraits. Since the compiler synthesizes these
-// instances on demand, we are essentially enabling
-// users to write axioms if we view trait selection,
-// as a proof system.
-//
-// For example the below test allows us to add the rule:
-// forall (T : Type), T : Copy
-//
-// Providing a copy instance for *any* type, which
-// is most definitely unsound. Imagine copying a
-// type that contains a mutable reference, enabling
-// mutable aliasing.
-//
-// You can imagine an even more dangerous test,
-// which currently compiles on nightly.
-//
-// fn main() {
-// let mut i = 10;
-// let (a, b) = copy(&mut i);
-// println!("{:?} {:?}", a, b);
-// }
-
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait Magic: Copy {} //~ ERROR E0568
-impl<T:Magic> Magic for T {}
-
-fn copy<T: Magic>(x: T) -> (T, T) { (x, x) }
-
-#[derive(Debug)]
-struct NoClone;
-
-fn main() {
- let (a, b) = copy(NoClone);
- println!("{:?} {:?}", a, b);
-}
diff --git a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr b/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr
deleted file mode 100644
index d7716f4b6..000000000
--- a/src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr
+++ /dev/null
@@ -1,11 +0,0 @@
-error[E0568]: auto traits cannot have super traits or lifetime bounds
- --> $DIR/typeck-auto-trait-no-supertraits.rs:28:17
- |
-LL | auto trait Magic: Copy {}
- | -----^^^^^^ help: remove the super traits or lifetime bounds
- | |
- | auto trait cannot have super traits or lifetime bounds
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0568`.
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs b/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs
deleted file mode 100644
index f2fb67f11..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs
+++ /dev/null
@@ -1,19 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait MyTrait {}
-
-struct MyS;
-
-struct MyS2;
-
-impl !MyTrait for MyS2 {}
-
-fn is_mytrait<T: MyTrait>() {}
-
-fn main() {
- is_mytrait::<MyS>();
-
- is_mytrait::<(MyS2, MyS)>();
- //~^ ERROR `MyS2: MyTrait` is not satisfied
-}
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr b/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr
deleted file mode 100644
index 0c4970a72..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr
+++ /dev/null
@@ -1,16 +0,0 @@
-error[E0277]: the trait bound `MyS2: MyTrait` is not satisfied in `(MyS2, MyS)`
- --> $DIR/typeck-default-trait-impl-constituent-types-2.rs:17:18
- |
-LL | is_mytrait::<(MyS2, MyS)>();
- | ^^^^^^^^^^^ within `(MyS2, MyS)`, the trait `MyTrait` is not implemented for `MyS2`
- |
- = note: required because it appears within the type `(MyS2, MyS)`
-note: required by a bound in `is_mytrait`
- --> $DIR/typeck-default-trait-impl-constituent-types-2.rs:12:18
- |
-LL | fn is_mytrait<T: MyTrait>() {}
- | ^^^^^^^ required by this bound in `is_mytrait`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs b/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs
deleted file mode 100644
index 73ff46d05..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs
+++ /dev/null
@@ -1,23 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait MyTrait {}
-
-impl<T> !MyTrait for *mut T {}
-
-struct MyS;
-
-struct MyS2;
-
-impl !MyTrait for MyS2 {}
-
-struct MyS3;
-
-fn is_mytrait<T: MyTrait>() {}
-
-fn main() {
- is_mytrait::<MyS>();
-
- is_mytrait::<MyS2>();
- //~^ ERROR `MyS2: MyTrait` is not satisfied
-}
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr b/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr
deleted file mode 100644
index c575c485a..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr
+++ /dev/null
@@ -1,15 +0,0 @@
-error[E0277]: the trait bound `MyS2: MyTrait` is not satisfied
- --> $DIR/typeck-default-trait-impl-constituent-types.rs:21:18
- |
-LL | is_mytrait::<MyS2>();
- | ^^^^ the trait `MyTrait` is not implemented for `MyS2`
- |
-note: required by a bound in `is_mytrait`
- --> $DIR/typeck-default-trait-impl-constituent-types.rs:16:18
- |
-LL | fn is_mytrait<T: MyTrait>() {}
- | ^^^^^^^ required by this bound in `is_mytrait`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs b/src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs
deleted file mode 100644
index f7f56f97f..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs
+++ /dev/null
@@ -1,29 +0,0 @@
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait MyTrait {}
-
-unsafe auto trait MyUnsafeTrait {}
-
-struct ThisImplsTrait;
-
-impl !MyUnsafeTrait for ThisImplsTrait {}
-
-
-struct ThisImplsUnsafeTrait;
-
-impl !MyTrait for ThisImplsUnsafeTrait {}
-
-fn is_my_trait<T: MyTrait>() {}
-fn is_my_unsafe_trait<T: MyUnsafeTrait>() {}
-
-fn main() {
- is_my_trait::<ThisImplsTrait>();
- is_my_trait::<ThisImplsUnsafeTrait>();
- //~^ ERROR `ThisImplsUnsafeTrait: MyTrait` is not satisfied
-
- is_my_unsafe_trait::<ThisImplsTrait>();
- //~^ ERROR `ThisImplsTrait: MyUnsafeTrait` is not satisfied
-
- is_my_unsafe_trait::<ThisImplsUnsafeTrait>();
-}
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr b/src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr
deleted file mode 100644
index fa8dd41da..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr
+++ /dev/null
@@ -1,27 +0,0 @@
-error[E0277]: the trait bound `ThisImplsUnsafeTrait: MyTrait` is not satisfied
- --> $DIR/typeck-default-trait-impl-negation.rs:22:19
- |
-LL | is_my_trait::<ThisImplsUnsafeTrait>();
- | ^^^^^^^^^^^^^^^^^^^^ the trait `MyTrait` is not implemented for `ThisImplsUnsafeTrait`
- |
-note: required by a bound in `is_my_trait`
- --> $DIR/typeck-default-trait-impl-negation.rs:17:19
- |
-LL | fn is_my_trait<T: MyTrait>() {}
- | ^^^^^^^ required by this bound in `is_my_trait`
-
-error[E0277]: the trait bound `ThisImplsTrait: MyUnsafeTrait` is not satisfied
- --> $DIR/typeck-default-trait-impl-negation.rs:25:26
- |
-LL | is_my_unsafe_trait::<ThisImplsTrait>();
- | ^^^^^^^^^^^^^^ the trait `MyUnsafeTrait` is not implemented for `ThisImplsTrait`
- |
-note: required by a bound in `is_my_unsafe_trait`
- --> $DIR/typeck-default-trait-impl-negation.rs:18:26
- |
-LL | fn is_my_unsafe_trait<T: MyUnsafeTrait>() {}
- | ^^^^^^^^^^^^^ required by this bound in `is_my_unsafe_trait`
-
-error: aborting due to 2 previous errors
-
-For more information about this error, try `rustc --explain E0277`.
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs b/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs
deleted file mode 100644
index 2bbe82270..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs
+++ /dev/null
@@ -1,21 +0,0 @@
-// Test that declaring that `&T` is `Defaulted` if `T:Signed` implies
-// that other `&T` is NOT `Defaulted` if `T:Signed` does not hold. In
-// other words, the auto impl only applies if there are no existing
-// impls whose types unify.
-
-#![feature(auto_traits)]
-#![feature(negative_impls)]
-
-auto trait Defaulted { }
-impl<'a,T:Signed> Defaulted for &'a T { }
-impl<'a,T:Signed> Defaulted for &'a mut T { }
-fn is_defaulted<T:Defaulted>() { }
-
-trait Signed { }
-impl Signed for i32 { }
-
-fn main() {
- is_defaulted::<&'static i32>();
- is_defaulted::<&'static u32>();
- //~^ ERROR `u32: Signed` is not satisfied
-}
diff --git a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr b/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr
deleted file mode 100644
index ce7095664..000000000
--- a/src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr
+++ /dev/null
@@ -1,21 +0,0 @@
-error[E0277]: the trait bound `u32: Signed` is not satisfied
- --> $DIR/typeck-default-trait-impl-precedence.rs:19:20
- |
-LL | is_defaulted::<&'static u32>();
- | ^^^^^^^^^^^^ the trait `Signed` is not implemented for `u32`
- |
- = help: the trait `Signed` is implemented for `i32`
-note: required for `&'static u32` to implement `Defaulted`
- --> $DIR/typeck-default-trait-impl-precedence.rs:10:19
- |
-LL | impl<'a,T:Signed> Defaulted for &'a T { }
- | ^^^^^^^^^ ^^^^^
-note: required by a bound in `is_defaulted`
- --> $DIR/typeck-default-trait-impl-precedence.rs:12:19
- |
-LL | fn is_defaulted<T:Defaulted>() { }
- | ^^^^^^^^^ required by this bound in `is_defaulted`
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0277`.