From 218caa410aa38c29984be31a5229b9fa717560ee Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:19:13 +0200 Subject: Merging upstream version 1.68.2+dfsg1. Signed-off-by: Daniel Baumann --- src/test/ui/auto-traits/auto-is-contextual.rs | 18 ----- .../auto-traits/auto-trait-projection-recursion.rs | 34 --------- .../ui/auto-traits/auto-trait-validation.fixed | 13 ---- src/test/ui/auto-traits/auto-trait-validation.rs | 13 ---- .../ui/auto-traits/auto-trait-validation.stderr | 37 ---------- src/test/ui/auto-traits/auto-traits.rs | 32 --------- src/test/ui/auto-traits/bad-generics-on-dyn.rs | 11 --- src/test/ui/auto-traits/bad-generics-on-dyn.stderr | 11 --- src/test/ui/auto-traits/issue-23080-2.rs | 13 ---- src/test/ui/auto-traits/issue-23080-2.stderr | 11 --- src/test/ui/auto-traits/issue-23080.rs | 17 ----- src/test/ui/auto-traits/issue-23080.stderr | 14 ---- src/test/ui/auto-traits/issue-84075.rs | 16 ----- src/test/ui/auto-traits/issue-84075.stderr | 11 --- src/test/ui/auto-traits/suspicious-impls-lint.rs | 50 ------------- .../ui/auto-traits/suspicious-impls-lint.stderr | 82 ---------------------- .../typeck-auto-trait-no-supertraits-2.rs | 16 ----- .../typeck-auto-trait-no-supertraits-2.stderr | 19 ----- .../typeck-auto-trait-no-supertraits.rs | 39 ---------- .../typeck-auto-trait-no-supertraits.stderr | 11 --- ...ypeck-default-trait-impl-constituent-types-2.rs | 19 ----- ...k-default-trait-impl-constituent-types-2.stderr | 16 ----- .../typeck-default-trait-impl-constituent-types.rs | 23 ------ ...eck-default-trait-impl-constituent-types.stderr | 15 ---- .../typeck-default-trait-impl-negation.rs | 29 -------- .../typeck-default-trait-impl-negation.stderr | 27 ------- .../typeck-default-trait-impl-precedence.rs | 21 ------ .../typeck-default-trait-impl-precedence.stderr | 21 ------ 28 files changed, 639 deletions(-) delete mode 100644 src/test/ui/auto-traits/auto-is-contextual.rs delete mode 100644 src/test/ui/auto-traits/auto-trait-projection-recursion.rs delete mode 100644 src/test/ui/auto-traits/auto-trait-validation.fixed delete mode 100644 src/test/ui/auto-traits/auto-trait-validation.rs delete mode 100644 src/test/ui/auto-traits/auto-trait-validation.stderr delete mode 100644 src/test/ui/auto-traits/auto-traits.rs delete mode 100644 src/test/ui/auto-traits/bad-generics-on-dyn.rs delete mode 100644 src/test/ui/auto-traits/bad-generics-on-dyn.stderr delete mode 100644 src/test/ui/auto-traits/issue-23080-2.rs delete mode 100644 src/test/ui/auto-traits/issue-23080-2.stderr delete mode 100644 src/test/ui/auto-traits/issue-23080.rs delete mode 100644 src/test/ui/auto-traits/issue-23080.stderr delete mode 100644 src/test/ui/auto-traits/issue-84075.rs delete mode 100644 src/test/ui/auto-traits/issue-84075.stderr delete mode 100644 src/test/ui/auto-traits/suspicious-impls-lint.rs delete mode 100644 src/test/ui/auto-traits/suspicious-impls-lint.stderr delete mode 100644 src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.rs delete mode 100644 src/test/ui/auto-traits/typeck-auto-trait-no-supertraits-2.stderr delete mode 100644 src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.rs delete mode 100644 src/test/ui/auto-traits/typeck-auto-trait-no-supertraits.stderr delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.rs delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types-2.stderr delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.rs delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-constituent-types.stderr delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-negation.rs delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-negation.stderr delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-precedence.rs delete mode 100644 src/test/ui/auto-traits/typeck-default-trait-impl-precedence.stderr (limited to 'src/test/ui/auto-traits') 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 as Y>::P: Send -// which normalizes to Box>>: Send -// which needs X>: Send -// which needs as Y>::P: Send -// -// At this point we used to normalize the predicate to `Box>>: 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>>: 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>>; -} - -struct C<'a>(&'a ()); -struct X(T::P); - -fn is_send() {} - -fn main() { - is_send::>>(); -} 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 {} -//~^ 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 {} - | -------^^^ 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) {} -fn take_auto_unsafe(_: 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(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(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 Magic for T {} - -fn copy(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); -unsafe impl Send for MayImplementSendOk {} // ok - -struct MayImplementSendErr(T); -unsafe impl Send for MayImplementSendErr<&T> {} -//~^ ERROR -//~| WARNING this will change its meaning - -struct ContainsNonSendDirect(*const T); -unsafe impl Send for ContainsNonSendDirect<&T> {} // ok - -struct ContainsPtr(*const T); -struct ContainsIndirectNonSend(ContainsPtr); -unsafe impl Send for ContainsIndirectNonSend<&T> {} // ok - -struct ContainsVec(Vec); -unsafe impl Send for ContainsVec {} -//~^ ERROR -//~| WARNING this will change its meaning - -struct TwoParams(T, U); -unsafe impl Send for TwoParams {} // ok - -struct TwoParamsFlipped(T, U); -unsafe impl Send for TwoParamsFlipped {} // ok - -struct TwoParamsSame(T, U); -unsafe impl Send for TwoParamsSame {} -//~^ ERROR -//~| WARNING this will change its meaning - -pub struct WithPhantomDataNonSend(PhantomData<*const T>, U); -unsafe impl Send for WithPhantomDataNonSend {} // ok - -pub struct WithPhantomDataSend(PhantomData, U); -unsafe impl Send for WithPhantomDataSend<*const T, i8> {} -//~^ ERROR -//~| WARNING this will change its meaning - -pub struct WithLifetime<'a, T>(&'a (), T); -unsafe impl Send for WithLifetime<'static, T> {} // ok -unsafe impl Sync for WithLifetime<'static, Vec> {} -//~^ 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 Send for MayImplementSendErr<&T> {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = warning: this will change its meaning in a future release! - = note: for more information, see issue #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); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -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 {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = warning: this will change its meaning in a future release! - = note: for more information, see issue #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(Vec); - | ^^^^^^^^^^^^^^^^^^^^^ - -error: cross-crate traits with a default impl, like `Send`, should not be specialized - --> $DIR/suspicious-impls-lint.rs:32:1 - | -LL | unsafe impl Send for TwoParamsSame {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = warning: this will change its meaning in a future release! - = note: for more information, see issue #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); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: cross-crate traits with a default impl, like `Send`, should not be specialized - --> $DIR/suspicious-impls-lint.rs:40:1 - | -LL | unsafe impl Send for WithPhantomDataSend<*const T, i8> {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = warning: this will change its meaning in a future release! - = note: for more information, see issue #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(PhantomData, 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 Sync for WithLifetime<'static, Vec> {} - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = warning: this will change its meaning in a future release! - = note: for more information, see issue #93367 - = note: `Vec` 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 : Magic {} //~ ERROR E0568 -//~^ ERROR E0568 -impl Magic for T {} - -fn copy(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 : 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 : 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 Magic for T {} - -fn copy(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() {} - -fn main() { - is_mytrait::(); - - 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() {} - | ^^^^^^^ 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 !MyTrait for *mut T {} - -struct MyS; - -struct MyS2; - -impl !MyTrait for MyS2 {} - -struct MyS3; - -fn is_mytrait() {} - -fn main() { - is_mytrait::(); - - is_mytrait::(); - //~^ 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::(); - | ^^^^ 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() {} - | ^^^^^^^ 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() {} -fn is_my_unsafe_trait() {} - -fn main() { - is_my_trait::(); - is_my_trait::(); - //~^ ERROR `ThisImplsUnsafeTrait: MyTrait` is not satisfied - - is_my_unsafe_trait::(); - //~^ ERROR `ThisImplsTrait: MyUnsafeTrait` is not satisfied - - is_my_unsafe_trait::(); -} 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::(); - | ^^^^^^^^^^^^^^^^^^^^ 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() {} - | ^^^^^^^ 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::(); - | ^^^^^^^^^^^^^^ 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() {} - | ^^^^^^^^^^^^^ 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() { } - -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() { } - | ^^^^^^^^^ required by this bound in `is_defaulted` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. -- cgit v1.2.3