diff options
Diffstat (limited to 'tests/ui/rfc-2632-const-trait-impl')
164 files changed, 0 insertions, 3555 deletions
diff --git a/tests/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs b/tests/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs deleted file mode 100644 index 780a510c5..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/assoc-type-const-bound-usage.rs +++ /dev/null @@ -1,14 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo { - type Assoc: ~const Foo; - fn foo() {} -} - -const fn foo<T: ~const Foo>() { - <T as Foo>::Assoc::foo(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/assoc-type.rs b/tests/ui/rfc-2632-const-trait-impl/assoc-type.rs deleted file mode 100644 index 96790a873..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/assoc-type.rs +++ /dev/null @@ -1,33 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -struct NonConstAdd(i32); - -impl std::ops::Add for NonConstAdd { - type Output = Self; - - fn add(self, rhs: Self) -> Self { - NonConstAdd(self.0 + rhs.0) - } -} - -#[const_trait] -trait Foo { - type Bar: ~const std::ops::Add; -} - -impl const Foo for NonConstAdd { - type Bar = NonConstAdd; -} - -#[const_trait] -trait Baz { - type Qux: std::ops::Add; -} - -impl const Baz for NonConstAdd { - type Qux = NonConstAdd; // OK -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/assoc-type.stderr b/tests/ui/rfc-2632-const-trait-impl/assoc-type.stderr deleted file mode 100644 index 0cffae1da..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/assoc-type.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/assoc-type.rs:17:22 - | -LL | type Bar: ~const std::ops::Add; - | ^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/attr-misuse.rs b/tests/ui/rfc-2632-const-trait-impl/attr-misuse.rs deleted file mode 100644 index 01ac74fef..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/attr-misuse.rs +++ /dev/null @@ -1,10 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait A { - #[const_trait] //~ ERROR attribute should be applied - fn foo(self); -} - -#[const_trait] //~ ERROR attribute should be applied -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/attr-misuse.stderr b/tests/ui/rfc-2632-const-trait-impl/attr-misuse.stderr deleted file mode 100644 index b18f33218..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/attr-misuse.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: attribute should be applied to a trait - --> $DIR/attr-misuse.rs:9:1 - | -LL | #[const_trait] - | ^^^^^^^^^^^^^^ - -error: attribute should be applied to a trait - --> $DIR/attr-misuse.rs:5:5 - | -LL | #[const_trait] - | ^^^^^^^^^^^^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs b/tests/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs deleted file mode 100644 index e73082c11..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs +++ /dev/null @@ -1,23 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -pub trait MyTrait { - fn defaulted_func(&self) {} - fn func(self); -} - -pub struct NonConst; - -impl MyTrait for NonConst { - fn func(self) { - - } -} - -pub struct Const; - -impl const MyTrait for Const { - fn func(self) { - - } -} diff --git a/tests/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs deleted file mode 100644 index 589e3f024..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs +++ /dev/null @@ -1,19 +0,0 @@ -#![feature(const_trait_impl)] -#![feature(staged_api)] -#![stable(feature = "rust1", since = "1.0.0")] - -#[stable(feature = "rust1", since = "1.0.0")] -#[const_trait] -pub trait MyTrait { - #[stable(feature = "rust1", since = "1.0.0")] - fn func(); -} - -#[stable(feature = "rust1", since = "1.0.0")] -pub struct Unstable; - -#[stable(feature = "rust1", since = "1.0.0")] -#[rustc_const_unstable(feature = "unstable", issue = "none")] -impl const MyTrait for Unstable { - fn func() {} -} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs deleted file mode 100644 index dd9933974..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs +++ /dev/null @@ -1,29 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -pub trait Plus { - fn plus(self, rhs: Self) -> Self; -} - -impl const Plus for i32 { - fn plus(self, rhs: Self) -> Self { - self + rhs - } -} - -impl Plus for u32 { - fn plus(self, rhs: Self) -> Self { - self + rhs - } -} - -pub const fn add_i32(a: i32, b: i32) -> i32 { - a.plus(b) // ok -} - -pub const fn add_u32(a: u32, b: u32) -> u32 { - a.plus(b) - //~^ ERROR the trait bound -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr deleted file mode 100644 index 7350909ba..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `u32: ~const Plus` is not satisfied - --> $DIR/call-const-trait-method-fail.rs:25:7 - | -LL | a.plus(b) - | ^^^^ the trait `~const Plus` is not implemented for `u32` - | -note: the trait `Plus` is implemented for `u32`, but that implementation is not `const` - --> $DIR/call-const-trait-method-fail.rs:25:7 - | -LL | a.plus(b) - | ^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs deleted file mode 100644 index ae0c2e6bc..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs +++ /dev/null @@ -1,43 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -struct Int(i32); - -impl const std::ops::Add for Int { - type Output = Int; - - fn add(self, rhs: Self) -> Self { - Int(self.0.plus(rhs.0)) - } -} - -impl const PartialEq for Int { - fn eq(&self, rhs: &Self) -> bool { - self.0 == rhs.0 - } - fn ne(&self, other: &Self) -> bool { - !self.eq(other) - } -} - -#[const_trait] -pub trait Plus { - fn plus(self, rhs: Self) -> Self; -} - -impl const Plus for i32 { - fn plus(self, rhs: Self) -> Self { - self + rhs - } -} - -pub const fn add_i32(a: i32, b: i32) -> i32 { - a.plus(b) -} - -const ADD_INT: Int = Int(1i32) + Int(2i32); - -fn main() { - assert!(ADD_INT == Int(3i32)); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr b/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr deleted file mode 100644 index ff53eea11..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: const `impl` for trait `Add` which is not marked with `#[const_trait]` - --> $DIR/call-const-trait-method-pass.rs:7:12 - | -LL | impl const std::ops::Add for Int { - | ^^^^^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/call-const-trait-method-pass.rs:15:12 - | -LL | impl const PartialEq for Int { - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs deleted file mode 100644 index 5120e6bfb..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.rs +++ /dev/null @@ -1,15 +0,0 @@ -// known-bug: #110395 -#![feature(const_trait_impl)] - -#[const_trait] -trait MyPartialEq { - fn eq(&self, other: &Self) -> bool; -} - -impl<T: ~const PartialEq> const MyPartialEq for T { - fn eq(&self, other: &Self) -> bool { - PartialEq::eq(self, other) - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.stderr deleted file mode 100644 index 02d53cc78..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-in-impl.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-in-impl.rs:9:16 - | -LL | impl<T: ~const PartialEq> const MyPartialEq for T { - | ^^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs deleted file mode 100644 index 3febb328a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs +++ /dev/null @@ -1,28 +0,0 @@ -//! Basic test for calling methods on generic type parameters in `const fn`. - -// known-bug: #110395 - -#![feature(const_trait_impl)] - -struct S; - -impl const PartialEq for S { - fn eq(&self, _: &S) -> bool { - true - } - fn ne(&self, other: &S) -> bool { - !self.eq(other) - } -} - -const fn equals_self<T: ~const PartialEq>(t: &T) -> bool { - *t == *t -} - -const fn equals_self_wrapper<T: ~const PartialEq>(t: &T) -> bool { - equals_self(t) -} - -pub const EQ: bool = equals_self_wrapper(&S); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.stderr deleted file mode 100644 index 529a472e0..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-chain.stderr +++ /dev/null @@ -1,23 +0,0 @@ -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/call-generic-method-chain.rs:9:12 - | -LL | impl const PartialEq for S { - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-method-chain.rs:18:32 - | -LL | const fn equals_self<T: ~const PartialEq>(t: &T) -> bool { - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-method-chain.rs:22:40 - | -LL | const fn equals_self_wrapper<T: ~const PartialEq>(t: &T) -> bool { - | ^^^^^^^^^ - -error: aborting due to 3 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs deleted file mode 100644 index e618160d3..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.rs +++ /dev/null @@ -1,31 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -struct S; - -impl const PartialEq for S { - fn eq(&self, _: &S) -> bool { - true - } - fn ne(&self, other: &S) -> bool { - !self.eq(other) - } -} - -// This duplicate bound should not result in ambiguities. It should be equivalent to a single ~const -// bound. -const fn equals_self<T: PartialEq + ~const PartialEq>(t: &T) -> bool { - *t == *t -} - -trait A: PartialEq {} -impl<T: PartialEq> A for T {} - -const fn equals_self2<T: A + ~const PartialEq>(t: &T) -> bool { - *t == *t -} - -pub const EQ: bool = equals_self(&S) && equals_self2(&S); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr deleted file mode 100644 index bdc6ccc8a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-dup-bound.stderr +++ /dev/null @@ -1,23 +0,0 @@ -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/call-generic-method-dup-bound.rs:7:12 - | -LL | impl const PartialEq for S { - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-method-dup-bound.rs:18:44 - | -LL | const fn equals_self<T: PartialEq + ~const PartialEq>(t: &T) -> bool { - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-method-dup-bound.rs:25:37 - | -LL | const fn equals_self2<T: A + ~const PartialEq>(t: &T) -> bool { - | ^^^^^^^^^ - -error: aborting due to 3 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs deleted file mode 100644 index fe1abbf42..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.rs +++ /dev/null @@ -1,9 +0,0 @@ -// known-bug: #110395 -#![feature(const_trait_impl)] - -pub const fn equals_self<T: PartialEq>(t: &T) -> bool { - *t == *t - // (remove this) ~^ ERROR can't compare -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr deleted file mode 100644 index 3963f64ad..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-fail.stderr +++ /dev/null @@ -1,28 +0,0 @@ -error[E0277]: can't compare `T` with `T` in const contexts - --> $DIR/call-generic-method-fail.rs:5:5 - | -LL | *t == *t - | ^^^^^^^^ no implementation for `T == T` - | -note: the trait `PartialEq` is implemented for `T`, but that implementation is not `const` - --> $DIR/call-generic-method-fail.rs:5:5 - | -LL | *t == *t - | ^^^^^^^^ - -error[E0015]: cannot call non-const operator in constant functions - --> $DIR/call-generic-method-fail.rs:5:5 - | -LL | *t == *t - | ^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants -help: consider further restricting this bound - | -LL | pub const fn equals_self<T: PartialEq + ~const std::cmp::PartialEq>(t: &T) -> bool { - | ++++++++++++++++++++++++++++ - -error: aborting due to 2 previous errors - -Some errors have detailed explanations: E0015, E0277. -For more information about an error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs deleted file mode 100644 index e197c8b73..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst-bound.rs +++ /dev/null @@ -1,17 +0,0 @@ -// check-pass - -struct S; - -impl PartialEq for S { - fn eq(&self, _: &S) -> bool { - true - } -} - -const fn equals_self<T: PartialEq>(t: &T) -> bool { - true -} - -pub const EQ: bool = equals_self(&S); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs deleted file mode 100644 index 414a8c87d..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs +++ /dev/null @@ -1,26 +0,0 @@ -#![feature(const_trait_impl)] - -struct S; - -#[const_trait] -trait Foo { - fn eq(&self, _: &Self) -> bool; -} - -impl Foo for S { - fn eq(&self, _: &S) -> bool { - true - } -} - -const fn equals_self<T: ~const Foo>(t: &T) -> bool { - true -} - -// Calling `equals_self` with something that has a non-const impl should throw an error, despite -// it not using the impl. - -pub const EQ: bool = equals_self(&S); -//~^ ERROR - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr deleted file mode 100644 index a28d6ce05..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `S: ~const Foo` is not satisfied - --> $DIR/call-generic-method-nonconst.rs:23:22 - | -LL | pub const EQ: bool = equals_self(&S); - | ^^^^^^^^^^^^^^^ the trait `~const Foo` is not implemented for `S` - | -note: the trait `Foo` is implemented for `S`, but that implementation is not `const` - --> $DIR/call-generic-method-nonconst.rs:23:22 - | -LL | pub const EQ: bool = equals_self(&S); - | ^^^^^^^^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs deleted file mode 100644 index 09f35a277..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs +++ /dev/null @@ -1,24 +0,0 @@ -//! Basic test for calling methods on generic type parameters in `const fn`. - -// known-bug: #110395 - -#![feature(const_trait_impl)] - -struct S; - -impl const PartialEq for S { - fn eq(&self, _: &S) -> bool { - true - } - fn ne(&self, other: &S) -> bool { - !self.eq(other) - } -} - -const fn equals_self<T: ~const PartialEq>(t: &T) -> bool { - *t == *t -} - -pub const EQ: bool = equals_self(&S); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.stderr b/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.stderr deleted file mode 100644 index 7fbe89dba..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call-generic-method-pass.stderr +++ /dev/null @@ -1,17 +0,0 @@ -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/call-generic-method-pass.rs:9:12 - | -LL | impl const PartialEq for S { - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/call-generic-method-pass.rs:18:32 - | -LL | const fn equals_self<T: ~const PartialEq>(t: &T) -> bool { - | ^^^^^^^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/call.rs b/tests/ui/rfc-2632-const-trait-impl/call.rs deleted file mode 100644 index 5f48c2353..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/call.rs +++ /dev/null @@ -1,10 +0,0 @@ -// check-pass - -#![feature(const_closures, const_trait_impl)] -#![allow(incomplete_features)] - -pub const _: () = { - assert!((const || true)()); -}; - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs b/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs deleted file mode 100644 index 9ba19e800..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs +++ /dev/null @@ -1,31 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -pub struct Int(i32); - -impl const std::ops::Add for i32 { - type Output = Self; - - fn add(self, rhs: Self) -> Self { - self + rhs - } -} - -impl std::ops::Add for Int { - type Output = Self; - - fn add(self, rhs: Self) -> Self { - Int(self.0 + rhs.0) - } -} - -impl const std::ops::Add for Int { - type Output = Self; - - fn add(self, rhs: Self) -> Self { - Int(self.0 + rhs.0) - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr deleted file mode 100644 index 4f858d61e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: const `impl` for trait `Add` which is not marked with `#[const_trait]` - --> $DIR/const-and-non-const-impl.rs:7:12 - | -LL | impl const std::ops::Add for i32 { - | ^^^^^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: const `impl` for trait `Add` which is not marked with `#[const_trait]` - --> $DIR/const-and-non-const-impl.rs:23:12 - | -LL | impl const std::ops::Add for Int { - | ^^^^^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs b/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs deleted file mode 100644 index 52984fb6b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs +++ /dev/null @@ -1,16 +0,0 @@ -#![feature(const_trait_impl)] - -struct S; -#[const_trait] -trait T { - fn foo(); -} - -fn non_const() {} - -impl const T for S { - fn foo() { non_const() } - //~^ ERROR cannot call non-const fn -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr deleted file mode 100644 index c8783de4c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0015]: cannot call non-const fn `non_const` in constant functions - --> $DIR/const-check-fns-in-const-impl.rs:12:16 - | -LL | fn foo() { non_const() } - | ^^^^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-closure-parse-not-item.rs b/tests/ui/rfc-2632-const-trait-impl/const-closure-parse-not-item.rs deleted file mode 100644 index 2c99d8bf1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-closure-parse-not-item.rs +++ /dev/null @@ -1,10 +0,0 @@ -// check-pass - -#![feature(const_trait_impl, const_closures)] -#![allow(incomplete_features)] - -const fn test() -> impl ~const Fn() { - const move || {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs deleted file mode 100644 index b4cc7a9e1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.rs +++ /dev/null @@ -1,20 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr { - fn a(self) -> i32; -} - -impl Tr for () { - fn a(self) -> i32 { 42 } -} - -const fn need_const_closure<T: ~const FnOnce(()) -> i32>(x: T) -> i32 { - x(()) -} - -const _: () = assert!(need_const_closure(Tr::a) == 42); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr deleted file mode 100644 index 112416a35..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method-fail.stderr +++ /dev/null @@ -1,16 +0,0 @@ -error[E0277]: the trait bound `(): ~const Tr` is not satisfied in `fn(()) -> i32 {<() as Tr>::a}` - --> $DIR/const-closure-trait-method-fail.rs:18:23 - | -LL | const _: () = assert!(need_const_closure(Tr::a) == 42); - | ^^^^^^^^^^^^^^^^^^^^^^^^^ within `fn(()) -> i32 {<() as Tr>::a}`, the trait `~const Tr` is not implemented for `()` - | -note: the trait `Tr` is implemented for `()`, but that implementation is not `const` - --> $DIR/const-closure-trait-method-fail.rs:18:23 - | -LL | const _: () = assert!(need_const_closure(Tr::a) == 42); - | ^^^^^^^^^^^^^^^^^^^^^^^^^ - = note: required because it appears within the type `fn(()) -> i32 {<() as Tr>::a}` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs b/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs deleted file mode 100644 index 3e6d19088..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-closure-trait-method.rs +++ /dev/null @@ -1,19 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr { - fn a(self) -> i32; -} - -impl const Tr for () { - fn a(self) -> i32 { 42 } -} - -const fn need_const_closure<T: ~const FnOnce(()) -> i32>(x: T) -> i32 { - x(()) -} - -const _: () = assert!(need_const_closure(Tr::a) == 42); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-closures.rs b/tests/ui/rfc-2632-const-trait-impl/const-closures.rs deleted file mode 100644 index 7c55b51c8..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-closures.rs +++ /dev/null @@ -1,30 +0,0 @@ -// check-pass - -#![feature(const_trait_impl)] - -const fn answer_p1<F>(f: &F) -> u8 - where - F: ~const FnOnce() -> u8, - F: ~const FnMut() -> u8, - F: ~const Fn() -> u8, -{ - f() * 7 -} - -const fn three() -> u8 { - 3 -} - -const fn answer_p2() -> u8 { - answer_p1(&three) -} - -const fn answer<F: ~const Fn() -> u8>(f: &F) -> u8 { - f() + f() -} - -const ANSWER: u8 = answer(&answer_p2); - -fn main() { - assert_eq!(ANSWER, 42) -} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs b/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs deleted file mode 100644 index 140a06a73..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs +++ /dev/null @@ -1,29 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait ConstDefaultFn: Sized { - fn b(self); - - fn a(self) { - self.b(); - } -} - -struct NonConstImpl; -struct ConstImpl; - -impl ConstDefaultFn for NonConstImpl { - fn b(self) {} -} - -impl const ConstDefaultFn for ConstImpl { - fn b(self) {} -} - -const fn test() { - NonConstImpl.a(); - //~^ ERROR the trait bound - ConstImpl.a(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr b/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr deleted file mode 100644 index f9d0d1f78..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `NonConstImpl: ~const ConstDefaultFn` is not satisfied - --> $DIR/const-default-method-bodies.rs:24:18 - | -LL | NonConstImpl.a(); - | ^ the trait `~const ConstDefaultFn` is not implemented for `NonConstImpl` - | -note: the trait `ConstDefaultFn` is implemented for `NonConstImpl`, but that implementation is not `const` - --> $DIR/const-default-method-bodies.rs:24:5 - | -LL | NonConstImpl.a(); - | ^^^^^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-bound.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop-bound.rs deleted file mode 100644 index 948f0efbc..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-bound.rs +++ /dev/null @@ -1,25 +0,0 @@ -// check-pass - -#![feature(const_trait_impl)] -#![feature(const_precise_live_drops)] - -use std::marker::Destruct; - -const fn foo<T, E>(res: Result<T, E>) -> Option<T> where E: ~const Destruct { - match res { - Ok(t) => Some(t), - Err(_e) => None, - } -} - -pub struct Foo<T>(T); - -const fn baz<T, E>(res: Result<Foo<T>, Foo<E>>) -> Option<Foo<T>> -where - T: ~const Destruct, - E: ~const Destruct, -{ - foo(res) -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.precise.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.precise.stderr deleted file mode 100644 index 13350a6d1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.precise.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error: const `impl` for trait `Drop` which is not marked with `#[const_trait]` - --> $DIR/const-drop-fail-2.rs:23:25 - | -LL | impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> { - | ^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-drop-fail-2.rs:29:26 - | -LL | const fn check<T: ~const Destruct>(_: T) {} - | ^^^^^^^^ - -error: const `impl` for trait `Drop` which is not marked with `#[const_trait]` - --> $DIR/const-drop-fail-2.rs:39:25 - | -LL | impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> { - | ^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to 3 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.rs deleted file mode 100644 index 3de9d37d4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.rs +++ /dev/null @@ -1,43 +0,0 @@ -// known-bug: #110395 -#![feature(const_trait_impl)] -#![feature(const_mut_refs)] -#![cfg_attr(precise, feature(const_precise_live_drops))] - -use std::marker::{Destruct, PhantomData}; - -struct NonTrivialDrop; - -impl Drop for NonTrivialDrop { - fn drop(&mut self) { - println!("Non trivial drop"); - } -} - -#[const_trait] -trait A { fn a() { } } - -impl A for NonTrivialDrop {} - -struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>); - -impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> { - fn drop(&mut self) { - T::a(); - } -} - -const fn check<T: ~const Destruct>(_: T) {} - -const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>( - ConstDropImplWithBounds(PhantomData) -); - -struct ConstDropImplWithNonConstBounds<T: A>(PhantomData<T>); - -impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> { - fn drop(&mut self) { - T::a(); - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stderr deleted file mode 100644 index 375f5d2c5..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stderr +++ /dev/null @@ -1,50 +0,0 @@ -error[E0277]: the trait bound `NonTrivialDrop: ~const A` is not satisfied - --> $DIR/const-drop-fail-2.rs:31:23 - | -LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>( - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `~const A` is not implemented for `NonTrivialDrop` - | -note: the trait `A` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail-2.rs:31:23 - | -LL | const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>( - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -note: required by a bound in `ConstDropImplWithBounds` - --> $DIR/const-drop-fail-2.rs:21:35 - | -LL | struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>); - | ^^^^^^^^ required by this bound in `ConstDropImplWithBounds` - -error[E0277]: the trait bound `NonTrivialDrop: ~const A` is not satisfied - --> $DIR/const-drop-fail-2.rs:32:5 - | -LL | ConstDropImplWithBounds(PhantomData) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `~const A` is not implemented for `NonTrivialDrop` - | -note: the trait `A` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail-2.rs:32:5 - | -LL | ConstDropImplWithBounds(PhantomData) - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -note: required by a bound in `ConstDropImplWithBounds` - --> $DIR/const-drop-fail-2.rs:21:35 - | -LL | struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>); - | ^^^^^^^^ required by this bound in `ConstDropImplWithBounds` - -error[E0367]: `Drop` impl requires `T: ~const A` but the struct it is implemented for does not - --> $DIR/const-drop-fail-2.rs:37:9 - | -LL | impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> { - | ^^^^^^^^ - | -note: the implementor must specify the same requirement - --> $DIR/const-drop-fail-2.rs:35:1 - | -LL | struct ConstDropImplWithNonConstBounds<T: A>(PhantomData<T>); - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 3 previous errors - -Some errors have detailed explanations: E0277, E0367. -For more information about an error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stock.stderr deleted file mode 100644 index 13350a6d1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail-2.stock.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error: const `impl` for trait `Drop` which is not marked with `#[const_trait]` - --> $DIR/const-drop-fail-2.rs:23:25 - | -LL | impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> { - | ^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-drop-fail-2.rs:29:26 - | -LL | const fn check<T: ~const Destruct>(_: T) {} - | ^^^^^^^^ - -error: const `impl` for trait `Drop` which is not marked with `#[const_trait]` - --> $DIR/const-drop-fail-2.rs:39:25 - | -LL | impl<T: ~const A> const Drop for ConstDropImplWithNonConstBounds<T> { - | ^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to 3 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr deleted file mode 100644 index e745cbd24..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.precise.stderr +++ /dev/null @@ -1,58 +0,0 @@ -error[E0277]: can't drop `NonTrivialDrop` in const contexts - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ the trait `~const Destruct` is not implemented for `NonTrivialDrop` -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - | -note: the trait `Destruct` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - = note: this error originates in the macro `check_all` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0277]: can't drop `NonTrivialDrop` in const contexts - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ within `ConstImplWithDropGlue`, the trait `~const Destruct` is not implemented for `NonTrivialDrop` -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - | -note: the trait `Destruct` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation -note: required because it appears within the type `ConstImplWithDropGlue` - --> $DIR/const-drop-fail.rs:18:8 - | -LL | struct ConstImplWithDropGlue(NonTrivialDrop); - | ^^^^^^^^^^^^^^^^^^^^^ - = note: this error originates in the macro `check_all` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.rs deleted file mode 100644 index 1c37648ff..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.rs +++ /dev/null @@ -1,37 +0,0 @@ -// known-bug: #110395 - -// revisions: stock precise -#![feature(const_trait_impl)] -#![feature(const_mut_refs)] -#![cfg_attr(precise, feature(const_precise_live_drops))] - -use std::marker::{Destruct, PhantomData}; - -struct NonTrivialDrop; - -impl Drop for NonTrivialDrop { - fn drop(&mut self) { - println!("Non trivial drop"); - } -} - -struct ConstImplWithDropGlue(NonTrivialDrop); - -impl const Drop for ConstImplWithDropGlue { - fn drop(&mut self) {} -} - -const fn check<T: ~const Destruct>(_: T) {} - -macro_rules! check_all { - ($($exp:expr),*$(,)?) => {$( - const _: () = check($exp); - )*}; -} - -check_all! { - NonTrivialDrop, - ConstImplWithDropGlue(NonTrivialDrop), -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr deleted file mode 100644 index e745cbd24..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop-fail.stock.stderr +++ /dev/null @@ -1,58 +0,0 @@ -error[E0277]: can't drop `NonTrivialDrop` in const contexts - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ the trait `~const Destruct` is not implemented for `NonTrivialDrop` -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - | -note: the trait `Destruct` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - = note: this error originates in the macro `check_all` (in Nightly builds, run with -Z macro-backtrace for more info) - -error[E0277]: can't drop `NonTrivialDrop` in const contexts - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ within `ConstImplWithDropGlue`, the trait `~const Destruct` is not implemented for `NonTrivialDrop` -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation - | -note: the trait `Destruct` is implemented for `NonTrivialDrop`, but that implementation is not `const` - --> $DIR/const-drop-fail.rs:28:23 - | -LL | const _: () = check($exp); - | ^^^^^^^^^^^ -... -LL | / check_all! { -LL | | NonTrivialDrop, -LL | | ConstImplWithDropGlue(NonTrivialDrop), -LL | | } - | |_- in this macro invocation -note: required because it appears within the type `ConstImplWithDropGlue` - --> $DIR/const-drop-fail.rs:18:8 - | -LL | struct ConstImplWithDropGlue(NonTrivialDrop); - | ^^^^^^^^^^^^^^^^^^^^^ - = note: this error originates in the macro `check_all` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const-drop.rs b/tests/ui/rfc-2632-const-trait-impl/const-drop.rs deleted file mode 100644 index b0fc3adf9..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-drop.rs +++ /dev/null @@ -1,113 +0,0 @@ -// run-pass -// revisions: stock precise -#![feature(const_trait_impl)] -#![feature(const_mut_refs)] -#![feature(never_type)] -#![cfg_attr(precise, feature(const_precise_live_drops))] - -use std::marker::Destruct; - -struct S<'a>(&'a mut u8); - -impl<'a> const Drop for S<'a> { - fn drop(&mut self) { - *self.0 += 1; - } -} - -const fn a<T: ~const Destruct>(_: T) {} - -const fn b() -> u8 { - let mut c = 0; - let _ = S(&mut c); - a(S(&mut c)); - c -} - -const C: u8 = b(); - -macro_rules! implements_const_drop { - ($($exp:expr),*$(,)?) => { - $( - const _: () = a($exp); - )* - } -} - -#[allow(dead_code)] -mod t { - pub struct Foo; - pub enum Bar { A } - pub fn foo() {} - pub struct ConstDrop; - - impl const Drop for ConstDrop { - fn drop(&mut self) {} - } - - pub struct HasConstDrop(pub ConstDrop); - pub struct TrivialFields(pub u8, pub i8, pub usize, pub isize); - - #[const_trait] - pub trait SomeTrait { - fn foo(); - } - impl const SomeTrait for () { - fn foo() {} - } - // non-const impl - impl SomeTrait for i32 { - fn foo() {} - } - - pub struct ConstDropWithBound<T: ~const SomeTrait>(pub core::marker::PhantomData<T>); - - impl<T: ~const SomeTrait> const Drop for ConstDropWithBound<T> { - fn drop(&mut self) { - T::foo(); - } - } - - pub struct ConstDropWithNonconstBound<T: SomeTrait>(pub core::marker::PhantomData<T>); - - impl<T: SomeTrait> const Drop for ConstDropWithNonconstBound<T> { - fn drop(&mut self) { - // Note: we DON'T use the `T: SomeTrait` bound - } - } -} - -use t::*; - -implements_const_drop! { - 1u8, - 2, - 3.0, - Foo, - Bar::A, - foo, - ConstDrop, - HasConstDrop(ConstDrop), - TrivialFields(1, 2, 3, 4), - &1, - &1 as *const i32, - ConstDropWithBound::<()>, - ConstDropWithNonconstBound::<i32>, - Result::<i32, !>::Ok(1), -} - -fn main() { - struct HasDropGlue(#[allow(unused_tuple_struct_fields)] Box<u8>); - struct HasDropImpl; - impl Drop for HasDropImpl { - fn drop(&mut self) { - println!("not trivial drop"); - } - } - - // These types should pass because ~const in a non-const context should have no effect. - a(HasDropGlue(Box::new(0))); - a(HasDropImpl); - - assert_eq!(C, 2); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs deleted file mode 100644 index bed4e9fd1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![feature(const_trait_impl)] - -struct Foo; - -const impl Foo { //~ ERROR: expected identifier, found keyword - fn bar() {} -} - -fn main() { - // shouldn't error here because we shouldn't have been able to recover above - Foo::bar(); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr deleted file mode 100644 index 603f6b7d2..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: expected identifier, found keyword `impl` - --> $DIR/const-impl-norecover.rs:5:7 - | -LL | const impl Foo { - | ^^^^ expected identifier, found keyword - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs deleted file mode 100644 index 837124db0..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo {} - -const impl Foo for i32 {} //~ ERROR: expected identifier, found keyword - -#[const_trait] -trait Bar {} - -const impl<T: Foo> Bar for T {} //~ ERROR: expected identifier, found keyword - -const fn still_implements<T: Bar>() {} - -const _: () = still_implements::<i32>(); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr deleted file mode 100644 index 7217fc855..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr +++ /dev/null @@ -1,26 +0,0 @@ -error: expected identifier, found keyword `impl` - --> $DIR/const-impl-recovery.rs:6:7 - | -LL | const impl Foo for i32 {} - | ^^^^ expected identifier, found keyword - | -help: you might have meant to write a const trait impl - | -LL - const impl Foo for i32 {} -LL + impl const Foo for i32 {} - | - -error: expected identifier, found keyword `impl` - --> $DIR/const-impl-recovery.rs:11:7 - | -LL | const impl<T: Foo> Bar for T {} - | ^^^^ expected identifier, found keyword - | -help: you might have meant to write a const trait impl - | -LL - const impl<T: Foo> Bar for T {} -LL + impl<T: Foo> const Bar for T {} - | - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs deleted file mode 100644 index 2b4963991..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.rs +++ /dev/null @@ -1,9 +0,0 @@ -#![feature(const_trait_impl)] - -pub trait A {} -//~^ HELP: mark `A` as const - -impl const A for () {} -//~^ ERROR: const `impl` for trait `A` which is not marked with `#[const_trait]` - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr deleted file mode 100644 index 478adcf3e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-requires-const-trait.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: const `impl` for trait `A` which is not marked with `#[const_trait]` - --> $DIR/const-impl-requires-const-trait.rs:6:12 - | -LL | pub trait A {} - | - help: mark `A` as const: `#[const_trait]` -... -LL | impl const A for () {} - | ^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.rs b/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.rs deleted file mode 100644 index f396deff4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.rs +++ /dev/null @@ -1,55 +0,0 @@ -// known-bug: #110395 -#![allow(incomplete_features)] -#![feature( - associated_type_bounds, - const_trait_impl, - const_cmp, - return_position_impl_trait_in_trait, -)] - -use std::marker::Destruct; - -const fn cmp(a: &impl ~const PartialEq) -> bool { - a == a -} - -const fn wrap(x: impl ~const PartialEq + ~const Destruct) - -> impl ~const PartialEq + ~const Destruct -{ - x -} - -#[const_trait] -trait Foo { - fn huh() -> impl ~const PartialEq + ~const Destruct + Copy; -} - -impl const Foo for () { - fn huh() -> impl ~const PartialEq + ~const Destruct + Copy { - 123 - } -} - -const _: () = { - assert!(cmp(&0xDEADBEEFu32)); - assert!(cmp(&())); - assert!(wrap(123) == wrap(123)); - assert!(wrap(123) != wrap(456)); - let x = <() as Foo>::huh(); - assert!(x == x); -}; - -#[const_trait] -trait T {} -struct S; -impl const T for S {} - -const fn rpit() -> impl ~const T { S } - -const fn apit(_: impl ~const T + ~const Destruct) {} - -const fn rpit_assoc_bound() -> impl IntoIterator<Item: ~const T> { Some(S) } - -const fn apit_assoc_bound(_: impl IntoIterator<Item: ~const T> + ~const Destruct) {} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.stderr b/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.stderr deleted file mode 100644 index f9078e227..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const-impl-trait.stderr +++ /dev/null @@ -1,39 +0,0 @@ -error[E0635]: unknown feature `const_cmp` - --> $DIR/const-impl-trait.rs:6:5 - | -LL | const_cmp, - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-impl-trait.rs:12:30 - | -LL | const fn cmp(a: &impl ~const PartialEq) -> bool { - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-impl-trait.rs:16:30 - | -LL | const fn wrap(x: impl ~const PartialEq + ~const Destruct) - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-impl-trait.rs:17:20 - | -LL | -> impl ~const PartialEq + ~const Destruct - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-impl-trait.rs:24:29 - | -LL | fn huh() -> impl ~const PartialEq + ~const Destruct + Copy; - | ^^^^^^^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/const-impl-trait.rs:28:29 - | -LL | fn huh() -> impl ~const PartialEq + ~const Destruct + Copy { - | ^^^^^^^^^ - -error: aborting due to 6 previous errors - -For more information about this error, try `rustc --explain E0635`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs deleted file mode 100644 index dba3ad7f8..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.rs +++ /dev/null @@ -1,5 +0,0 @@ -#[derive_const(Default)] //~ ERROR use of unstable library feature -//~^ ERROR not marked with `#[const_trait]` -pub struct S; - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr deleted file mode 100644 index 6a81f96d8..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-gate.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error[E0658]: use of unstable library feature 'derive_const' - --> $DIR/derive-const-gate.rs:1:3 - | -LL | #[derive_const(Default)] - | ^^^^^^^^^^^^ - | - = help: add `#![feature(derive_const)]` to the crate attributes to enable - -error: const `impl` for trait `Default` which is not marked with `#[const_trait]` - --> $DIR/derive-const-gate.rs:1:16 - | -LL | #[derive_const(Default)] - | ^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs deleted file mode 100644 index b575ea8da..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.rs +++ /dev/null @@ -1,13 +0,0 @@ -// known-bug: #110395 -#![feature(derive_const)] - -pub struct A; - -impl Default for A { - fn default() -> A { A } -} - -#[derive_const(Default)] -pub struct S(A); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr deleted file mode 100644 index 1c69ad431..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-non-const-type.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error: const `impl` for trait `Default` which is not marked with `#[const_trait]` - --> $DIR/derive-const-non-const-type.rs:10:16 - | -LL | #[derive_const(Default)] - | ^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs deleted file mode 100644 index 69098542b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.rs +++ /dev/null @@ -1,19 +0,0 @@ -// known-bug: #110395 -#![feature(const_trait_impl, const_cmp, const_default_impls, derive_const)] - -pub struct A; - -impl const Default for A { - fn default() -> A { A } -} - -impl const PartialEq for A { - fn eq(&self, _: &A) -> bool { true } -} - -#[derive_const(Default, PartialEq)] -pub struct S((), A); - -const _: () = assert!(S((), A) == S::default()); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr deleted file mode 100644 index 88054096e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-use.stderr +++ /dev/null @@ -1,53 +0,0 @@ -error[E0635]: unknown feature `const_cmp` - --> $DIR/derive-const-use.rs:2:30 - | -LL | #![feature(const_trait_impl, const_cmp, const_default_impls, derive_const)] - | ^^^^^^^^^ - -error[E0635]: unknown feature `const_default_impls` - --> $DIR/derive-const-use.rs:2:41 - | -LL | #![feature(const_trait_impl, const_cmp, const_default_impls, derive_const)] - | ^^^^^^^^^^^^^^^^^^^ - -error: const `impl` for trait `Default` which is not marked with `#[const_trait]` - --> $DIR/derive-const-use.rs:6:12 - | -LL | impl const Default for A { - | ^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/derive-const-use.rs:10:12 - | -LL | impl const PartialEq for A { - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: const `impl` for trait `Default` which is not marked with `#[const_trait]` - --> $DIR/derive-const-use.rs:14:16 - | -LL | #[derive_const(Default, PartialEq)] - | ^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - = note: this error originates in the derive macro `Default` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/derive-const-use.rs:14:25 - | -LL | #[derive_const(Default, PartialEq)] - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 6 previous errors - -For more information about this error, try `rustc --explain E0635`. diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.rs b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.rs deleted file mode 100644 index 2a5d0176b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.rs +++ /dev/null @@ -1,13 +0,0 @@ -// known-bug: #110395 - -#![feature(derive_const)] -#![feature(const_trait_impl)] - -#[derive_const(PartialEq)] -pub struct Reverse<T>(T); - -const fn foo(a: Reverse<i32>, b: Reverse<i32>) -> bool { - a == b -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr b/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr deleted file mode 100644 index fa7832658..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/const_derives/derive-const-with-params.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: const `impl` for trait `PartialEq` which is not marked with `#[const_trait]` - --> $DIR/derive-const-with-params.rs:6:16 - | -LL | #[derive_const(PartialEq)] - | ^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/derive-const-with-params.rs:6:16 - | -LL | #[derive_const(PartialEq)] - | ^^^^^^^^^ - | - = note: this error originates in the derive macro `PartialEq` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs b/tests/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs deleted file mode 100644 index bde8bf20f..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate-default-method-body-is-const.rs +++ /dev/null @@ -1,18 +0,0 @@ -// This tests that `const_trait` default methods can -// be called from a const context when used across crates. -// -// check-pass - -#![feature(const_trait_impl)] - -// aux-build: cross-crate.rs -extern crate cross_crate; - -use cross_crate::*; - -const _: () = { - Const.func(); - Const.defaulted_func(); -}; - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr deleted file mode 100644 index 633b7cc25..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate.gatednc.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `cross_crate::NonConst: ~const cross_crate::MyTrait` is not satisfied - --> $DIR/cross-crate.rs:17:14 - | -LL | NonConst.func(); - | ^^^^ the trait `~const cross_crate::MyTrait` is not implemented for `cross_crate::NonConst` - | -note: the trait `cross_crate::MyTrait` is implemented for `cross_crate::NonConst`, but that implementation is not `const` - --> $DIR/cross-crate.rs:17:5 - | -LL | NonConst.func(); - | ^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate.rs b/tests/ui/rfc-2632-const-trait-impl/cross-crate.rs deleted file mode 100644 index 6df47022c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate.rs +++ /dev/null @@ -1,24 +0,0 @@ -// revisions: stock gated stocknc gatednc -// [gated] check-pass -#![cfg_attr(any(gated, gatednc), feature(const_trait_impl))] - -// aux-build: cross-crate.rs -extern crate cross_crate; - -use cross_crate::*; - -fn non_const_context() { - NonConst.func(); - Const.func(); -} - -const fn const_context() { - #[cfg(any(stocknc, gatednc))] - NonConst.func(); - //[stocknc]~^ ERROR: the trait bound - //[gatednc]~^^ ERROR: the trait bound - Const.func(); - //[stock]~^ ERROR: cannot call -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr deleted file mode 100644 index 22f13a741..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0015]: cannot call non-const fn `<cross_crate::Const as cross_crate::MyTrait>::func` in constant functions - --> $DIR/cross-crate.rs:20:11 - | -LL | Const.func(); - | ^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr b/tests/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr deleted file mode 100644 index 9e97d3f11..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/cross-crate.stocknc.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `cross_crate::NonConst: cross_crate::MyTrait` is not satisfied - --> $DIR/cross-crate.rs:17:14 - | -LL | NonConst.func(); - | ^^^^ the trait `~const cross_crate::MyTrait` is not implemented for `cross_crate::NonConst` - | -note: the trait `cross_crate::MyTrait` is implemented for `cross_crate::NonConst`, but that implementation is not `const` - --> $DIR/cross-crate.rs:17:5 - | -LL | NonConst.func(); - | ^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs deleted file mode 100644 index 96acdc300..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr {} -impl Tr for () {} - -const fn foo<T>() where T: ~const Tr {} - -#[const_trait] -pub trait Foo { - fn foo() { - foo::<()>(); - //~^ ERROR the trait bound `(): ~const Tr` is not satisfied - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr deleted file mode 100644 index 26644f72c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-body-checking.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `(): ~const Tr` is not satisfied - --> $DIR/default-method-body-is-const-body-checking.rs:12:9 - | -LL | foo::<()>(); - | ^^^^^^^^^^^ the trait `~const Tr` is not implemented for `()` - | -note: the trait `Tr` is implemented for `()`, but that implementation is not `const` - --> $DIR/default-method-body-is-const-body-checking.rs:12:9 - | -LL | foo::<()>(); - | ^^^^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs deleted file mode 100644 index f70ecbc37..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -pub trait Tr { - fn a(&self) {} - - fn b(&self) { - ().a() - //~^ ERROR the trait bound - } -} - -impl Tr for () {} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr deleted file mode 100644 index 21ecddaff..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-same-trait-ck.stderr +++ /dev/null @@ -1,15 +0,0 @@ -error[E0277]: the trait bound `(): ~const Tr` is not satisfied - --> $DIR/default-method-body-is-const-same-trait-ck.rs:8:12 - | -LL | ().a() - | ^ the trait `~const Tr` is not implemented for `()` - | -note: the trait `Tr` is implemented for `()`, but that implementation is not `const` - --> $DIR/default-method-body-is-const-same-trait-ck.rs:8:9 - | -LL | ().a() - | ^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs deleted file mode 100644 index 1b45cd9aa..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/default-method-body-is-const-with-staged-api.rs +++ /dev/null @@ -1,17 +0,0 @@ -// check-pass - -// This was an ICE, because the compiler ensures the -// function to be const when performing const checking, -// but functions marked with the attribute are not const -// *and* subject to const checking. - -#![feature(staged_api)] -#![feature(const_trait_impl)] -#![stable(since = "1", feature = "foo")] - -#[const_trait] -trait Tr { - fn a() {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/do-not-const-check-override.rs b/tests/ui/rfc-2632-const-trait-impl/do-not-const-check-override.rs deleted file mode 100644 index 730e268c0..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/do-not-const-check-override.rs +++ /dev/null @@ -1,19 +0,0 @@ -// check-pass -#![feature(const_trait_impl, rustc_attrs)] - -#[const_trait] -trait Foo { - #[rustc_do_not_const_check] - fn into_iter(&self) { println!("FEAR ME!") } -} - - -impl const Foo for () { - fn into_iter(&self) { - // ^_^ - } -} - -const _: () = Foo::into_iter(&()); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/do-not-const-check.rs b/tests/ui/rfc-2632-const-trait-impl/do-not-const-check.rs deleted file mode 100644 index 3c39c53de..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/do-not-const-check.rs +++ /dev/null @@ -1,18 +0,0 @@ -// check-pass -#![feature(const_trait_impl, rustc_attrs)] - -#[const_trait] -trait IntoIter { - fn into_iter(self); -} - -#[const_trait] -trait Hmm: Sized { - #[rustc_do_not_const_check] - fn chain<U>(self, other: U) where U: IntoIter, - { - other.into_iter() - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr b/tests/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr deleted file mode 100644 index 4c630d33c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: fatal error triggered by #[rustc_error] - --> $DIR/feature-gate.rs:14:1 - | -LL | fn main() {} - | ^^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/feature-gate.rs b/tests/ui/rfc-2632-const-trait-impl/feature-gate.rs deleted file mode 100644 index 0b409fbaa..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/feature-gate.rs +++ /dev/null @@ -1,14 +0,0 @@ -// revisions: stock gated -// gate-test-const_trait_impl - -#![cfg_attr(gated, feature(const_trait_impl))] -#![feature(rustc_attrs)] - -struct S; -#[const_trait] //[stock]~ ERROR `const_trait` is a temporary placeholder -trait T {} -impl const T for S {} -//[stock]~^ ERROR const trait impls are experimental - -#[rustc_error] -fn main() {} //[gated]~ ERROR fatal error triggered by #[rustc_error] diff --git a/tests/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr deleted file mode 100644 index 0e938c1c5..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error[E0658]: const trait impls are experimental - --> $DIR/feature-gate.rs:10:6 - | -LL | impl const T for S {} - | ^^^^^ - | - = note: see issue #67792 <https://github.com/rust-lang/rust/issues/67792> for more information - = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable - -error[E0658]: `const_trait` is a temporary placeholder for marking a trait that is suitable for `const` `impls` and all default bodies as `const`, which may be removed or renamed in the future. - --> $DIR/feature-gate.rs:8:1 - | -LL | #[const_trait] - | ^^^^^^^^^^^^^^ - | - = note: see issue #67792 <https://github.com/rust-lang/rust/issues/67792> for more information - = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/rfc-2632-const-trait-impl/function-pointer-does-not-require-const.rs b/tests/ui/rfc-2632-const-trait-impl/function-pointer-does-not-require-const.rs deleted file mode 100644 index 60790e297..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/function-pointer-does-not-require-const.rs +++ /dev/null @@ -1,15 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -#[const_trait] -pub trait Test {} - -impl Test for () {} - -pub const fn test<T: ~const Test>() {} - -pub const fn min_by_i32() -> fn() { - test::<()> -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/gate.rs b/tests/ui/rfc-2632-const-trait-impl/gate.rs deleted file mode 100644 index d1c93ab9f..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/gate.rs +++ /dev/null @@ -1,13 +0,0 @@ -// gate-test-const_closures - -fn main() { - (const || {})(); - //~^ ERROR: const closures are experimental -} - -macro_rules! e { - ($e:expr) => {} -} - -e!((const || {})); -//~^ ERROR const closures are experimental diff --git a/tests/ui/rfc-2632-const-trait-impl/gate.stderr b/tests/ui/rfc-2632-const-trait-impl/gate.stderr deleted file mode 100644 index 11cc2cd56..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/gate.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error[E0658]: const closures are experimental - --> $DIR/gate.rs:4:6 - | -LL | (const || {})(); - | ^^^^^ - | - = note: see issue #106003 <https://github.com/rust-lang/rust/issues/106003> for more information - = help: add `#![feature(const_closures)]` to the crate attributes to enable - -error[E0658]: const closures are experimental - --> $DIR/gate.rs:12:5 - | -LL | e!((const || {})); - | ^^^^^ - | - = note: see issue #106003 <https://github.com/rust-lang/rust/issues/106003> for more information - = help: add `#![feature(const_closures)]` to the crate attributes to enable - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/rfc-2632-const-trait-impl/generic-bound.rs b/tests/ui/rfc-2632-const-trait-impl/generic-bound.rs deleted file mode 100644 index d665c4479..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/generic-bound.rs +++ /dev/null @@ -1,30 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -use std::marker::PhantomData; - -struct S<T>(PhantomData<T>); - -impl<T> Copy for S<T> {} -impl<T> Clone for S<T> { - fn clone(&self) -> Self { - S(PhantomData) - } -} - -impl<T> const std::ops::Add for S<T> { - type Output = Self; - - fn add(self, _: Self) -> Self { - S(std::marker::PhantomData) - } -} - -const fn twice<T: std::ops::Add>(arg: S<T>) -> S<T> { - arg + arg -} - -fn main() { - let _ = twice(S(PhantomData::<i32>)); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/generic-bound.stderr b/tests/ui/rfc-2632-const-trait-impl/generic-bound.stderr deleted file mode 100644 index 1b21d7c0e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/generic-bound.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error: const `impl` for trait `Add` which is not marked with `#[const_trait]` - --> $DIR/generic-bound.rs:16:15 - | -LL | impl<T> const std::ops::Add for S<T> { - | ^^^^^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/hir-const-check.rs b/tests/ui/rfc-2632-const-trait-impl/hir-const-check.rs deleted file mode 100644 index 337c73340..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/hir-const-check.rs +++ /dev/null @@ -1,17 +0,0 @@ -// Regression test for #69615. - -#![feature(const_trait_impl)] - -#[const_trait] -pub trait MyTrait { - fn method(&self) -> Option<()>; -} - -impl const MyTrait for () { - fn method(&self) -> Option<()> { - Some(())?; //~ ERROR `?` is not allowed in a `const fn` - None - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/hir-const-check.stderr b/tests/ui/rfc-2632-const-trait-impl/hir-const-check.stderr deleted file mode 100644 index 6d2be1daa..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/hir-const-check.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0658]: `?` is not allowed in a `const fn` - --> $DIR/hir-const-check.rs:12:9 - | -LL | Some(())?; - | ^^^^^^^^^ - | - = note: see issue #74935 <https://github.com/rust-lang/rust/issues/74935> for more information - = help: add `#![feature(const_try)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0658`. diff --git a/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs b/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs deleted file mode 100644 index 05b26465c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.rs +++ /dev/null @@ -1,9 +0,0 @@ -#![feature(const_trait_impl)] - -struct S; -trait T {} - -impl ~const T for S {} -//~^ ERROR expected a trait, found type - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr b/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr deleted file mode 100644 index 0a91719e1..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/impl-tilde-const-trait.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: expected a trait, found type - --> $DIR/impl-tilde-const-trait.rs:6:6 - | -LL | impl ~const T for S {} - | ^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs deleted file mode 100644 index 6df9696f2..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.rs +++ /dev/null @@ -1,17 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr { - fn req(&self); - - fn default() {} -} - -struct S; - -impl const Tr for u16 { - fn default() {} -} //~^^ ERROR not all trait items implemented - - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr deleted file mode 100644 index 6c6ca9f5d..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-fail.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0046]: not all trait items implemented, missing: `req` - --> $DIR/impl-with-default-fn-fail.rs:12:1 - | -LL | fn req(&self); - | -------------- `req` from trait -... -LL | impl const Tr for u16 { - | ^^^^^^^^^^^^^^^^^^^^^ missing `req` in implementation - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0046`. diff --git a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs b/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs deleted file mode 100644 index ae81421e9..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/impl-with-default-fn-pass.rs +++ /dev/null @@ -1,26 +0,0 @@ -// check-pass - -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr { - fn req(&self); - - fn default() {} -} - -impl const Tr for u8 { - fn req(&self) {} -} - -macro_rules! impl_tr { - ($ty: ty) => { - impl const Tr for $ty { - fn req(&self) {} - } - } -} - -impl_tr!(u64); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs b/tests/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs deleted file mode 100644 index f8ac793e4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/inherent-impl-const-bounds.rs +++ /dev/null @@ -1,22 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -struct S; - -#[const_trait] -trait A {} -#[const_trait] -trait B {} - -impl const A for S {} -impl const B for S {} - -impl S { - const fn a<T: ~const A>() where T: ~const B { - - } -} - -const _: () = S::a::<S>(); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/inherent-impl.rs b/tests/ui/rfc-2632-const-trait-impl/inherent-impl.rs deleted file mode 100644 index afd0d137b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/inherent-impl.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![feature(const_trait_impl)] -#![allow(bare_trait_objects)] - -struct S; -trait T {} - -impl const S {} -//~^ ERROR inherent impls cannot be `const` - -impl const T {} -//~^ ERROR inherent impls cannot be `const` - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/inherent-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/inherent-impl.stderr deleted file mode 100644 index 8c5562703..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/inherent-impl.stderr +++ /dev/null @@ -1,22 +0,0 @@ -error: inherent impls cannot be `const` - --> $DIR/inherent-impl.rs:7:12 - | -LL | impl const S {} - | ----- ^ inherent impl for this type - | | - | `const` because of this - | - = note: only trait implementations may be annotated with `const` - -error: inherent impls cannot be `const` - --> $DIR/inherent-impl.rs:10:12 - | -LL | impl const T {} - | ----- ^ inherent impl for this type - | | - | `const` because of this - | - = note: only trait implementations may be annotated with `const` - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-100222.rs b/tests/ui/rfc-2632-const-trait-impl/issue-100222.rs deleted file mode 100644 index 9f3f38ad4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-100222.rs +++ /dev/null @@ -1,39 +0,0 @@ -// revisions: nn ny yn yy -// check-pass -#![feature(const_trait_impl, associated_type_defaults, const_mut_refs)] - -#[cfg_attr(any(yn, yy), const_trait)] -pub trait Index { - type Output; -} - -#[cfg_attr(any(ny, yy), const_trait)] -pub trait IndexMut where Self: Index { - const C: <Self as Index>::Output; - type Assoc = <Self as Index>::Output; - fn foo(&mut self, x: <Self as Index>::Output) -> <Self as Index>::Output; -} - -impl Index for () { type Output = (); } - -#[cfg(not(any(nn, yn)))] -impl const IndexMut for <() as Index>::Output { - const C: <Self as Index>::Output = (); - type Assoc = <Self as Index>::Output; - fn foo(&mut self, x: <Self as Index>::Output) -> <Self as Index>::Output - where <Self as Index>::Output:, - {} -} - -#[cfg(any(nn, yn))] -impl IndexMut for <() as Index>::Output { - const C: <Self as Index>::Output = (); - type Assoc = <Self as Index>::Output; - fn foo(&mut self, x: <Self as Index>::Output) -> <Self as Index>::Output - where <Self as Index>::Output:, - {} -} - -const C: <() as Index>::Output = (); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-102156.rs b/tests/ui/rfc-2632-const-trait-impl/issue-102156.rs deleted file mode 100644 index fe4e91081..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-102156.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![feature(allocator_api)] -#![feature(const_trait_impl)] - -use core::convert::{From, TryFrom}; -//~^ ERROR -//~| ERROR - -use std::pin::Pin; -use std::alloc::Allocator; -impl<T: ?Sized, A: Allocator> const From<Box<T, A>> for Pin<Box<T, A>> -where - A: 'static, -{} - -pub fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-102156.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-102156.stderr deleted file mode 100644 index 8bf00eaff..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-102156.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0433]: failed to resolve: maybe a missing crate `core`? - --> $DIR/issue-102156.rs:4:5 - | -LL | use core::convert::{From, TryFrom}; - | ^^^^ maybe a missing crate `core`? - | - = help: consider adding `extern crate core` to use the `core` crate - -error[E0433]: failed to resolve: maybe a missing crate `core`? - --> $DIR/issue-102156.rs:4:5 - | -LL | use core::convert::{From, TryFrom}; - | ^^^^ maybe a missing crate `core`? - | - = help: consider adding `extern crate core` to use the `core` crate - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0433`. diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-102985.rs b/tests/ui/rfc-2632-const-trait-impl/issue-102985.rs deleted file mode 100644 index 07d3f51ed..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-102985.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![feature(const_trait_impl)] - -struct Bug { - inner: [(); match || 1 { - n => n(), - //~^ ERROR the trait bound - //~| ERROR the trait bound - //~| ERROR cannot call non-const closure in constants - }], -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-102985.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-102985.stderr deleted file mode 100644 index b98ccbe5d..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-102985.stderr +++ /dev/null @@ -1,41 +0,0 @@ -error[E0277]: the trait bound `[closure@$DIR/issue-102985.rs:4:23: 4:25]: ~const Fn<()>` is not satisfied - --> $DIR/issue-102985.rs:5:14 - | -LL | n => n(), - | ^^^ expected an `Fn<()>` closure, found `[closure@$DIR/issue-102985.rs:4:23: 4:25]` - | - = help: the trait `~const Fn<()>` is not implemented for closure `[closure@$DIR/issue-102985.rs:4:23: 4:25]` -note: the trait `Fn<()>` is implemented for `[closure@$DIR/issue-102985.rs:4:23: 4:25]`, but that implementation is not `const` - --> $DIR/issue-102985.rs:5:14 - | -LL | n => n(), - | ^^^ - = note: wrap the `[closure@$DIR/issue-102985.rs:4:23: 4:25]` in a closure with no arguments: `|| { /* code */ }` - -error[E0277]: the trait bound `[closure@$DIR/issue-102985.rs:4:23: 4:25]: ~const Fn<()>` is not satisfied - --> $DIR/issue-102985.rs:5:14 - | -LL | n => n(), - | ^^^ expected an `Fn<()>` closure, found `[closure@$DIR/issue-102985.rs:4:23: 4:25]` - | - = help: the trait `~const Fn<()>` is not implemented for closure `[closure@$DIR/issue-102985.rs:4:23: 4:25]` -note: the trait `Fn<()>` is implemented for `[closure@$DIR/issue-102985.rs:4:23: 4:25]`, but that implementation is not `const` - --> $DIR/issue-102985.rs:5:14 - | -LL | n => n(), - | ^^^ - = note: wrap the `[closure@$DIR/issue-102985.rs:4:23: 4:25]` in a closure with no arguments: `|| { /* code */ }` - -error[E0015]: cannot call non-const closure in constants - --> $DIR/issue-102985.rs:5:14 - | -LL | n => n(), - | ^^^ - | - = note: closures need an RFC before allowed to be called in constants - = note: calls in constants are limited to constant functions, tuple structs and tuple variants - -error: aborting due to 3 previous errors - -Some errors have detailed explanations: E0015, E0277. -For more information about an error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-103677.rs b/tests/ui/rfc-2632-const-trait-impl/issue-103677.rs deleted file mode 100644 index d81724a36..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-103677.rs +++ /dev/null @@ -1,5 +0,0 @@ -// check-pass - -const _: fn(&String) = |s| { &*s as &str; }; - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-79450.rs b/tests/ui/rfc-2632-const-trait-impl/issue-79450.rs deleted file mode 100644 index b604c65d7..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-79450.rs +++ /dev/null @@ -1,20 +0,0 @@ -#![feature(const_fmt_arguments_new)] -#![feature(const_trait_impl)] - -#[const_trait] -trait Tr { - fn req(&self); - - fn prov(&self) { - println!("lul"); //~ ERROR: cannot call non-const fn `_print` in constant functions - self.req(); - } -} - -struct S; - -impl const Tr for S { - fn req(&self) {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-79450.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-79450.stderr deleted file mode 100644 index 082c0333f..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-79450.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0015]: cannot call non-const fn `_print` in constant functions - --> $DIR/issue-79450.rs:9:9 - | -LL | println!("lul"); - | ^^^^^^^^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - = note: this error originates in the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info) - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-88155.rs b/tests/ui/rfc-2632-const-trait-impl/issue-88155.rs deleted file mode 100644 index b132c395a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-88155.rs +++ /dev/null @@ -1,13 +0,0 @@ -#![feature(const_trait_impl)] - -pub trait A { - fn assoc() -> bool; -} - -pub const fn foo<T: A>() -> bool { - T::assoc() - //~^ ERROR the trait bound - //~| ERROR cannot call non-const fn -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-88155.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-88155.stderr deleted file mode 100644 index 955923505..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-88155.stderr +++ /dev/null @@ -1,24 +0,0 @@ -error[E0277]: the trait bound `T: ~const A` is not satisfied - --> $DIR/issue-88155.rs:8:5 - | -LL | T::assoc() - | ^^^^^^^^^^ the trait `~const A` is not implemented for `T` - | -note: the trait `A` is implemented for `T`, but that implementation is not `const` - --> $DIR/issue-88155.rs:8:5 - | -LL | T::assoc() - | ^^^^^^^^^^ - -error[E0015]: cannot call non-const fn `<T as A>::assoc` in constant functions - --> $DIR/issue-88155.rs:8:5 - | -LL | T::assoc() - | ^^^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - -error: aborting due to 2 previous errors - -Some errors have detailed explanations: E0015, E0277. -For more information about an error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-90052.rs b/tests/ui/rfc-2632-const-trait-impl/issue-90052.rs deleted file mode 100644 index 21ddf4ab4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-90052.rs +++ /dev/null @@ -1,9 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Bar {} - -fn foo<T>() where T: ~const Bar {} -//~^ ERROR `~const` is not allowed - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-90052.stderr b/tests/ui/rfc-2632-const-trait-impl/issue-90052.stderr deleted file mode 100644 index b2a936537..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-90052.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: `~const` is not allowed here - --> $DIR/issue-90052.rs:6:22 - | -LL | fn foo<T>() where T: ~const Bar {} - | ^^^^^^^^^^ - | -note: this function is not `const`, so it cannot have `~const` trait bounds - --> $DIR/issue-90052.rs:6:4 - | -LL | fn foo<T>() where T: ~const Bar {} - | ^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-92111.rs b/tests/ui/rfc-2632-const-trait-impl/issue-92111.rs deleted file mode 100644 index 96a3e386e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-92111.rs +++ /dev/null @@ -1,23 +0,0 @@ -// Regression test for #92111. -// -// check-pass - -#![feature(const_trait_impl)] - -use std::marker::Destruct; - -pub trait Tr {} - -#[allow(drop_bounds)] -impl<T: Drop> Tr for T {} - -#[derive(Debug)] -pub struct S(i32); - -impl Tr for S {} - -const fn a<T: ~const Destruct>(t: T) {} - -fn main() { - a(S(0)); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs b/tests/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs deleted file mode 100644 index 4d3469653..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/issue-92230-wf-super-trait-env.rs +++ /dev/null @@ -1,15 +0,0 @@ -// Regression test for #92230. -// -// check-pass - -#![feature(const_trait_impl)] - -#[const_trait] -pub trait Super {} -#[const_trait] -pub trait Sub: Super {} - -impl<A> const Super for &A where A: ~const Super {} -impl<A> const Sub for &A where A: ~const Sub {} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/nested-closure.rs b/tests/ui/rfc-2632-const-trait-impl/nested-closure.rs deleted file mode 100644 index 0b423b340..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/nested-closure.rs +++ /dev/null @@ -1,12 +0,0 @@ -// check-pass - -#![feature(const_trait_impl, lazy_cell)] - -use std::sync::LazyLock; - -static EXTERN_FLAGS: LazyLock<String> = LazyLock::new(|| { - let x = || String::new(); - x() -}); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.rs b/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.rs deleted file mode 100644 index cd8bb5963..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.rs +++ /dev/null @@ -1,15 +0,0 @@ -#![feature(const_closures, const_trait_impl)] -#![allow(incomplete_features)] - -trait Foo { - fn foo(&self); -} - -impl Foo for () { - fn foo(&self) {} -} - -fn main() { - (const || { (()).foo() })(); - //~^ ERROR: cannot call non-const fn -} diff --git a/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.stderr b/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.stderr deleted file mode 100644 index 979d7febb..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/non-const-op-const-closure-non-const-outer.stderr +++ /dev/null @@ -1,11 +0,0 @@ -error[E0015]: cannot call non-const fn `<() as Foo>::foo` in constant functions - --> $DIR/non-const-op-const-closure-non-const-outer.rs:13:22 - | -LL | (const || { (()).foo() })(); - | ^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs b/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs deleted file mode 100644 index dff8a2444..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.rs +++ /dev/null @@ -1,18 +0,0 @@ -// known-bug: #110395 - -#![feature(const_trait_impl)] - -#[const_trait] -trait Convert<T> { - fn to(self) -> T; -} - -impl<A, B> const Convert<B> for A where B: ~const From<A> { - fn to(self) -> B { - B::from(self) - } -} - -const FOO: fn() -> String = || "foo".to(); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr b/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr deleted file mode 100644 index cfdda4713..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/non-const-op-in-closure-in-const.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/non-const-op-in-closure-in-const.rs:10:51 - | -LL | impl<A, B> const Convert<B> for A where B: ~const From<A> { - | ^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs deleted file mode 100644 index f31123f16..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.rs +++ /dev/null @@ -1,58 +0,0 @@ -// Tests that trait bounds on specializing trait impls must be `~const` if the -// same bound is present on the default impl and is `~const` there. - -#![feature(const_trait_impl)] -#![feature(rustc_attrs)] -#![feature(min_specialization)] - -#[rustc_specialization_trait] -trait Specialize {} - -#[const_trait] -trait Foo {} - -#[const_trait] -trait Bar { - fn bar(); -} - -// bgr360: I was only able to exercise the code path that raises the -// "missing ~const qualifier" error by making this base impl non-const, even -// though that doesn't really make sense to do. As seen below, if the base impl -// is made const, rustc fails earlier with an overlapping impl failure. -impl<T> Bar for T -where - T: ~const Foo, -{ - default fn bar() {} -} - -impl<T> Bar for T -where - T: Foo, //~ ERROR missing `~const` qualifier - T: Specialize, -{ - fn bar() {} -} - -#[const_trait] -trait Baz { - fn baz(); -} - -impl<T> const Baz for T -where - T: ~const Foo, -{ - default fn baz() {} -} - -impl<T> const Baz for T //~ ERROR conflicting implementations of trait `Baz` -where - T: Foo, - T: Specialize, -{ - fn baz() {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr deleted file mode 100644 index 057cf4aea..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-bound-non-const-specialized-bound.stderr +++ /dev/null @@ -1,18 +0,0 @@ -error: missing `~const` qualifier for specialization - --> $DIR/const-default-bound-non-const-specialized-bound.rs:32:8 - | -LL | T: Foo, - | ^^^ - -error[E0119]: conflicting implementations of trait `Baz` - --> $DIR/const-default-bound-non-const-specialized-bound.rs:50:1 - | -LL | impl<T> const Baz for T - | ----------------------- first implementation here -... -LL | impl<T> const Baz for T - | ^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0119`. diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs deleted file mode 100644 index 9ddea427c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-const-specialized.rs +++ /dev/null @@ -1,39 +0,0 @@ -// Tests that a const default trait impl can be specialized by another const -// trait impl and that the specializing impl will be used during const-eval. - -// run-pass - -#![feature(const_trait_impl)] -#![feature(min_specialization)] - -#[const_trait] -trait Value { - fn value() -> u32; -} - -const fn get_value<T: ~const Value>() -> u32 { - T::value() -} - -impl<T> const Value for T { - default fn value() -> u32 { - 0 - } -} - -struct FortyTwo; - -impl const Value for FortyTwo { - fn value() -> u32 { - 42 - } -} - -const ZERO: u32 = get_value::<()>(); - -const FORTY_TWO: u32 = get_value::<FortyTwo>(); - -fn main() { - assert_eq!(ZERO, 0); - assert_eq!(FORTY_TWO, 42); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs deleted file mode 100644 index a3bb9b3f9..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Tests that specializing trait impls must be at least as const as the default impl. - -#![feature(const_trait_impl)] -#![feature(min_specialization)] - -#[const_trait] -trait Value { - fn value() -> u32; -} - -impl<T> const Value for T { - default fn value() -> u32 { - 0 - } -} - -struct FortyTwo; - -impl Value for FortyTwo { //~ ERROR cannot specialize on const impl with non-const impl - fn value() -> u32 { - println!("You can't do that (constly)"); - 42 - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr b/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr deleted file mode 100644 index 247668047..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/const-default-impl-non-const-specialized-impl.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: cannot specialize on const impl with non-const impl - --> $DIR/const-default-impl-non-const-specialized-impl.rs:19:1 - | -LL | impl Value for FortyTwo { - | ^^^^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs deleted file mode 100644 index 2aac0a2b4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/default-keyword.rs +++ /dev/null @@ -1,15 +0,0 @@ -// check-pass - -#![feature(const_trait_impl)] -#![feature(min_specialization)] - -#[const_trait] -trait Foo { - fn foo(); -} - -impl const Foo for u32 { - default fn foo() {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs deleted file mode 100644 index 92d8be6bb..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95186-specialize-on-tilde-const.rs +++ /dev/null @@ -1,49 +0,0 @@ -// Tests that `~const` trait bounds can be used to specialize const trait impls. - -// check-pass - -#![feature(const_trait_impl)] -#![feature(rustc_attrs)] -#![feature(min_specialization)] - -#[const_trait] -#[rustc_specialization_trait] -trait Specialize {} - -#[const_trait] -trait Foo { - fn foo(); -} - -impl<T> const Foo for T { - default fn foo() {} -} - -impl<T> const Foo for T -where - T: ~const Specialize, -{ - fn foo() {} -} - -#[const_trait] -trait Bar { - fn bar() {} -} - -impl<T> const Bar for T -where - T: ~const Foo, -{ - default fn bar() {} -} - -impl<T> const Bar for T -where - T: ~const Foo, - T: ~const Specialize, -{ - fn bar() {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs deleted file mode 100644 index 51bfaf73b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/issue-95187-same-trait-bound-different-constness.rs +++ /dev/null @@ -1,57 +0,0 @@ -// Tests that `T: ~const Foo` in a specializing impl is treated as equivalent to -// `T: Foo` in the default impl for the purposes of specialization (i.e., it -// does not think that the user is attempting to specialize on trait `Foo`). - -// check-pass - -#![feature(rustc_attrs)] -#![feature(min_specialization)] -#![feature(const_trait_impl)] - -#[rustc_specialization_trait] -trait Specialize {} - -#[const_trait] -trait Foo {} - -#[const_trait] -trait Bar { - fn bar(); -} - -impl<T> Bar for T -where - T: Foo, -{ - default fn bar() {} -} - -impl<T> const Bar for T -where - T: ~const Foo, - T: Specialize, -{ - fn bar() {} -} - -#[const_trait] -trait Baz { - fn baz(); -} - -impl<T> const Baz for T -where - T: Foo, -{ - default fn baz() {} -} - -impl<T> const Baz for T -where - T: ~const Foo, - T: Specialize, -{ - fn baz() {} -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs b/tests/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs deleted file mode 100644 index 35aa52fbd..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specialization/non-const-default-const-specialized.rs +++ /dev/null @@ -1,39 +0,0 @@ -// Tests that a non-const default impl can be specialized by a const trait impl, -// but that the default impl cannot be used in a const context. - -// run-pass - -#![feature(const_trait_impl)] -#![feature(min_specialization)] - -#[const_trait] -trait Value { - fn value() -> u32; -} - -const fn get_value<T: ~const Value>() -> u32 { - T::value() -} - -impl<T> Value for T { - default fn value() -> u32 { - println!("You can't do that (constly)"); - 0 - } -} - -struct FortyTwo; - -impl const Value for FortyTwo { - fn value() -> u32 { - 42 - } -} - -fn main() { - let zero = get_value::<()>(); - assert_eq!(zero, 0); - - const FORTY_TWO: u32 = get_value::<FortyTwo>(); - assert_eq!(FORTY_TWO, 42); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs deleted file mode 100644 index 633543700..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.rs +++ /dev/null @@ -1,31 +0,0 @@ -#![feature(const_trait_impl, min_specialization, rustc_attrs)] - -#[rustc_specialization_trait] -#[const_trait] -pub trait Sup {} - -impl const Sup for () {} - -#[const_trait] -pub trait A { - fn a() -> u32; -} - -impl<T: Default> A for T { - default fn a() -> u32 { - 2 - } -} - -impl<T: Default + ~const Sup> const A for T { - fn a() -> u32 { - 3 - } -} - -const fn generic<T: Default>() { - <T as A>::a(); - //~^ ERROR: the trait bound `T: ~const Sup` is not satisfied -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr deleted file mode 100644 index 8923416f4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness-2.stderr +++ /dev/null @@ -1,21 +0,0 @@ -error[E0277]: the trait bound `T: ~const Sup` is not satisfied - --> $DIR/specializing-constness-2.rs:27:5 - | -LL | <T as A>::a(); - | ^^^^^^^^^^^^^ the trait `~const Sup` is not implemented for `T` - | -note: required for `T` to implement `~const A` - --> $DIR/specializing-constness-2.rs:20:37 - | -LL | impl<T: Default + ~const Sup> const A for T { - | ---------- ^ ^ - | | - | unsatisfied trait bound introduced here -help: consider further restricting this bound - | -LL | const fn generic<T: Default + ~const Sup>() { - | ++++++++++++ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness.rs b/tests/ui/rfc-2632-const-trait-impl/specializing-constness.rs deleted file mode 100644 index 5c2a3f801..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness.rs +++ /dev/null @@ -1,31 +0,0 @@ -#![feature(const_trait_impl, min_specialization, rustc_attrs)] - -#[rustc_specialization_trait] -#[const_trait] -pub trait Sup {} - -impl const Sup for () {} - -#[const_trait] -pub trait A { - fn a() -> u32; -} - -#[const_trait] -pub trait Spec {} - -impl<T: ~const Spec> const A for T { - default fn a() -> u32 { - 2 - } -} - -impl<T: Spec + Sup> A for T { -//~^ ERROR: cannot specialize -//~| ERROR: missing `~const` qualifier - fn a() -> u32 { - 3 - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/specializing-constness.stderr b/tests/ui/rfc-2632-const-trait-impl/specializing-constness.stderr deleted file mode 100644 index 1ffdc50e5..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/specializing-constness.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: cannot specialize on const impl with non-const impl - --> $DIR/specializing-constness.rs:23:1 - | -LL | impl<T: Spec + Sup> A for T { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -error: missing `~const` qualifier for specialization - --> $DIR/specializing-constness.rs:23:9 - | -LL | impl<T: Spec + Sup> A for T { - | ^^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs deleted file mode 100644 index fc0d82727..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.rs +++ /dev/null @@ -1,16 +0,0 @@ -// aux-build: staged-api.rs -extern crate staged_api; - -use staged_api::*; - -// Const stability has no impact on usage in non-const contexts. -fn non_const_context() { - Unstable::func(); -} - -const fn stable_const_context() { - Unstable::func(); - //~^ ERROR cannot call non-const fn `<staged_api::Unstable as staged_api::MyTrait>::func` in constant functions -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr deleted file mode 100644 index d7aa0d95c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api-user-crate.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0015]: cannot call non-const fn `<staged_api::Unstable as staged_api::MyTrait>::func` in constant functions - --> $DIR/staged-api-user-crate.rs:12:5 - | -LL | Unstable::func(); - | ^^^^^^^^^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api.rs b/tests/ui/rfc-2632-const-trait-impl/staged-api.rs deleted file mode 100644 index 1d79f5adf..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api.rs +++ /dev/null @@ -1,63 +0,0 @@ -// revisions: stable unstable - -#![cfg_attr(unstable, feature(unstable))] // The feature from the ./auxiliary/staged-api.rs file. -#![feature(const_trait_impl)] -#![feature(staged_api)] -#![stable(feature = "rust1", since = "1.0.0")] - -// aux-build: staged-api.rs -extern crate staged_api; - -use staged_api::*; - -#[stable(feature = "rust1", since = "1.0.0")] -pub struct Foo; - -#[stable(feature = "rust1", since = "1.0.0")] -#[cfg_attr(unstable, rustc_const_unstable(feature = "foo", issue = "none"))] -#[cfg_attr(stable, rustc_const_stable(feature = "foo", since = "1.0.0"))] -impl const MyTrait for Foo { - //[stable]~^ ERROR trait implementations cannot be const stable yet - fn func() {} -} - -// Const stability has no impact on usage in non-const contexts. -fn non_const_context() { - Unstable::func(); - Foo::func(); -} - -#[unstable(feature = "none", issue = "none")] -const fn const_context() { - Unstable::func(); - // ^ This is okay regardless of whether the `unstable` feature is enabled, as this function is - // not const-stable. - Foo::func(); - //[unstable]~^ ERROR not yet stable as a const fn - // ^ fails, because the `foo` feature is not active -} - -#[stable(feature = "rust1", since = "1.0.0")] -#[cfg_attr(unstable, rustc_const_unstable(feature = "foo", issue = "none"))] -pub const fn const_context_not_const_stable() { - //[stable]~^ ERROR function has missing const stability attribute - Unstable::func(); - // ^ This is okay regardless of whether the `unstable` feature is enabled, as this function is - // not const-stable. - Foo::func(); - //[unstable]~^ ERROR not yet stable as a const fn - // ^ fails, because the `foo` feature is not active -} - -#[stable(feature = "rust1", since = "1.0.0")] -#[rustc_const_stable(feature = "cheese", since = "1.0.0")] -const fn stable_const_context() { - Unstable::func(); - //[unstable]~^ ERROR not yet stable as a const fn - Foo::func(); - //[unstable]~^ ERROR not yet stable as a const fn - const_context_not_const_stable() - //[unstable]~^ ERROR not yet stable as a const fn -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr deleted file mode 100644 index a1aca762e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api.stable.stderr +++ /dev/null @@ -1,25 +0,0 @@ -error: trait implementations cannot be const stable yet - --> $DIR/staged-api.rs:19:1 - | -LL | / impl const MyTrait for Foo { -LL | | -LL | | fn func() {} -LL | | } - | |_^ - | - = note: see issue #67792 <https://github.com/rust-lang/rust/issues/67792> for more information - -error: function has missing const stability attribute - --> $DIR/staged-api.rs:42:1 - | -LL | / pub const fn const_context_not_const_stable() { -LL | | -LL | | Unstable::func(); -LL | | // ^ This is okay regardless of whether the `unstable` feature is enabled, as this function is -... | -LL | | // ^ fails, because the `foo` feature is not active -LL | | } - | |_^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr b/tests/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr deleted file mode 100644 index c38d1a81a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/staged-api.unstable.stderr +++ /dev/null @@ -1,42 +0,0 @@ -error: `<Foo as staged_api::MyTrait>::func` is not yet stable as a const fn - --> $DIR/staged-api.rs:35:5 - | -LL | Foo::func(); - | ^^^^^^^^^^^ - | - = help: add `#![feature(foo)]` to the crate attributes to enable - -error: `<Foo as staged_api::MyTrait>::func` is not yet stable as a const fn - --> $DIR/staged-api.rs:47:5 - | -LL | Foo::func(); - | ^^^^^^^^^^^ - | - = help: add `#![feature(foo)]` to the crate attributes to enable - -error: `<staged_api::Unstable as staged_api::MyTrait>::func` is not yet stable as a const fn - --> $DIR/staged-api.rs:55:5 - | -LL | Unstable::func(); - | ^^^^^^^^^^^^^^^^ - | - = help: const-stable functions can only call other const-stable functions - -error: `<Foo as staged_api::MyTrait>::func` is not yet stable as a const fn - --> $DIR/staged-api.rs:57:5 - | -LL | Foo::func(); - | ^^^^^^^^^^^ - | - = help: const-stable functions can only call other const-stable functions - -error: `const_context_not_const_stable` is not yet stable as a const fn - --> $DIR/staged-api.rs:59:5 - | -LL | const_context_not_const_stable() - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: const-stable functions can only call other const-stable functions - -error: aborting due to 5 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs b/tests/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs deleted file mode 100644 index 4520a3696..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/static-const-trait-bound.rs +++ /dev/null @@ -1,18 +0,0 @@ -// check-pass -pub struct S<T, F: FnOnce() -> T = fn() -> T> { - f: F, - x: Option<T>, -} - -impl<T, F: FnOnce() -> T> S<T, F> { - pub const fn new(f: F) -> Self { - Self { f, x: None } - } -} - -#[derive(Default)] -pub struct Foo; - -static LOCKED_CALLSITES: S<Foo> = S::new(Default::default); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.gated.stderr b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.gated.stderr deleted file mode 100644 index 78aab9469..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.gated.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0635]: unknown feature `const_default_impls` - --> $DIR/std-impl-gate.rs:6:46 - | -LL | #![cfg_attr(gated, feature(const_trait_impl, const_default_impls))] - | ^^^^^^^^^^^^^^^^^^^ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0635`. diff --git a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.rs b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.rs deleted file mode 100644 index e9e5e0235..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.rs +++ /dev/null @@ -1,21 +0,0 @@ -// This tests feature gates for const impls in the standard library. - -// revisions: stock gated -//[gated] known-bug: #110395 - -#![cfg_attr(gated, feature(const_trait_impl, const_default_impls))] - -fn non_const_context() -> Vec<usize> { - Default::default() -} - -const fn const_context() -> Vec<usize> { - Default::default() - //[stock]~^ ERROR cannot call non-const fn -} - -fn main() { - const VAL: Vec<usize> = const_context(); - - assert_eq!(VAL, non_const_context()); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr b/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr deleted file mode 100644 index 6a3396401..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/std-impl-gate.stock.stderr +++ /dev/null @@ -1,12 +0,0 @@ -error[E0015]: cannot call non-const fn `<Vec<usize> as Default>::default` in constant functions - --> $DIR/std-impl-gate.rs:13:5 - | -LL | Default::default() - | ^^^^^^^^^^^^^^^^^^ - | - = note: calls in constant functions are limited to constant functions, tuple structs and tuple variants - = help: add `#![feature(const_trait_impl)]` to the crate attributes to enable - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0015`. diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr deleted file mode 100644 index 97f346e8c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.nn.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-2.rs:11:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-2.rs:11:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr deleted file mode 100644 index 97f346e8c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.ny.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-2.rs:11:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-2.rs:11:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs deleted file mode 100644 index ecb06271c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.rs +++ /dev/null @@ -1,20 +0,0 @@ -#![feature(const_trait_impl)] - -// revisions: yy yn ny nn - -#[cfg_attr(any(yy, yn), const_trait)] -trait Foo { - fn a(&self); -} - -#[cfg_attr(any(yy, ny), const_trait)] -trait Bar: ~const Foo {} -//[ny,nn]~^ ERROR: ~const can only be applied to `#[const_trait]` -//[ny,nn]~| ERROR: ~const can only be applied to `#[const_trait]` - -const fn foo<T: Bar>(x: &T) { - x.a(); - //[yn,yy]~^ ERROR the trait bound -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr deleted file mode 100644 index c9fa19554..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yn.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0277]: the trait bound `T: ~const Foo` is not satisfied - --> $DIR/super-traits-fail-2.rs:16:7 - | -LL | x.a(); - | ^ the trait `~const Foo` is not implemented for `T` - | -note: the trait `Foo` is implemented for `T`, but that implementation is not `const` - --> $DIR/super-traits-fail-2.rs:16:5 - | -LL | x.a(); - | ^ -help: consider further restricting this bound - | -LL | const fn foo<T: Bar + ~const Foo>(x: &T) { - | ++++++++++++ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr deleted file mode 100644 index c9fa19554..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-2.yy.stderr +++ /dev/null @@ -1,19 +0,0 @@ -error[E0277]: the trait bound `T: ~const Foo` is not satisfied - --> $DIR/super-traits-fail-2.rs:16:7 - | -LL | x.a(); - | ^ the trait `~const Foo` is not implemented for `T` - | -note: the trait `Foo` is implemented for `T`, but that implementation is not `const` - --> $DIR/super-traits-fail-2.rs:16:5 - | -LL | x.a(); - | ^ -help: consider further restricting this bound - | -LL | const fn foo<T: Bar + ~const Foo>(x: &T) { - | ++++++++++++ - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr deleted file mode 100644 index fdc6b8058..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.nn.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:12:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:12:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:16:24 - | -LL | const fn foo<T: ~const Bar>(x: &T) { - | ^^^ - -error: aborting due to 3 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr deleted file mode 100644 index 7375b8c81..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.ny.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:12:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:12:19 - | -LL | trait Bar: ~const Foo {} - | ^^^ - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs deleted file mode 100644 index 8cf64944a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.rs +++ /dev/null @@ -1,21 +0,0 @@ -#![feature(const_trait_impl)] - -// revisions: yy yn ny nn -//[yy] check-pass - -#[cfg_attr(any(yy, yn), const_trait)] -trait Foo { - fn a(&self); -} - -#[cfg_attr(any(yy, ny), const_trait)] -trait Bar: ~const Foo {} -//[ny,nn]~^ ERROR: ~const can only be applied to `#[const_trait]` -//[ny,nn]~| ERROR: ~const can only be applied to `#[const_trait]` - -const fn foo<T: ~const Bar>(x: &T) { - //[yn,nn]~^ ERROR: ~const can only be applied to `#[const_trait]` - x.a(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr deleted file mode 100644 index 7a152914b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail-3.yn.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: ~const can only be applied to `#[const_trait]` traits - --> $DIR/super-traits-fail-3.rs:16:24 - | -LL | const fn foo<T: ~const Bar>(x: &T) { - | ^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.rs deleted file mode 100644 index 3e2b81368..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.rs +++ /dev/null @@ -1,18 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo { - fn a(&self); -} -#[const_trait] -trait Bar: ~const Foo {} - -struct S; -impl Foo for S { - fn a(&self) {} -} - -impl const Bar for S {} -//~^ ERROR the trait bound - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr b/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr deleted file mode 100644 index bf12ef1ca..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits-fail.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error[E0277]: the trait bound `S: ~const Foo` is not satisfied - --> $DIR/super-traits-fail.rs:15:20 - | -LL | impl const Bar for S {} - | ^ the trait `~const Foo` is not implemented for `S` - | -note: the trait `Foo` is implemented for `S`, but that implementation is not `const` - --> $DIR/super-traits-fail.rs:15:20 - | -LL | impl const Bar for S {} - | ^ -note: required by a bound in `Bar` - --> $DIR/super-traits-fail.rs:8:12 - | -LL | trait Bar: ~const Foo {} - | ^^^^^^^^^^ required by this bound in `Bar` - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/super-traits.rs b/tests/ui/rfc-2632-const-trait-impl/super-traits.rs deleted file mode 100644 index df96f6fb4..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/super-traits.rs +++ /dev/null @@ -1,25 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo { - fn a(&self); -} - -#[const_trait] -trait Bar: ~const Foo {} - -struct S; -impl const Foo for S { - fn a(&self) {} -} - -impl const Bar for S {} - -const fn foo<T: ~const Bar>(t: &T) { - t.a(); -} - -const _: () = foo(&S); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/syntax.rs b/tests/ui/rfc-2632-const-trait-impl/syntax.rs deleted file mode 100644 index 7ac2458e3..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/syntax.rs +++ /dev/null @@ -1,8 +0,0 @@ -// compile-flags: -Z parse-only -// check-pass - -#![feature(const_trait_bound_opt_out)] -#![feature(const_trait_impl)] - -// For now, this parses since an error does not occur until AST lowering. -impl ~const T {} diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs deleted file mode 100644 index 78a64b901..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.rs +++ /dev/null @@ -1,34 +0,0 @@ -#![feature(const_trait_impl)] -#![feature(generic_arg_infer)] -#![feature(generic_const_exprs)] -#![allow(incomplete_features)] - -struct Foo<const N: usize>; - -impl<const N: usize> Foo<N> { - fn add<A: ~const Add42>(self) -> Foo<{ A::add(N) }> { - Foo - } -} - -#[const_trait] -trait Add42 { - fn add(a: usize) -> usize; -} - -impl const Add42 for () { - fn add(a: usize) -> usize { - a + 42 - } -} - -fn bar<A: ~const Add42, const N: usize>(_: Foo<N>) -> Foo<{ A::add(N) }> { - //~^ ERROR `~const` is not allowed here - Foo -} - -fn main() { - let foo = Foo::<0>; - let foo = bar::<(), _>(foo); - let _foo = bar::<(), _>(foo); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr deleted file mode 100644 index aae72f36e..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-const-and-const-params.stderr +++ /dev/null @@ -1,14 +0,0 @@ -error: `~const` is not allowed here - --> $DIR/tilde-const-and-const-params.rs:25:11 - | -LL | fn bar<A: ~const Add42, const N: usize>(_: Foo<N>) -> Foo<{ A::add(N) }> { - | ^^^^^^^^^^^^ - | -note: this function is not `const`, so it cannot have `~const` trait bounds - --> $DIR/tilde-const-and-const-params.rs:25:4 - | -LL | fn bar<A: ~const Add42, const N: usize>(_: Foo<N>) -> Foo<{ A::add(N) }> { - | ^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs deleted file mode 100644 index 95f7aaba0..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.rs +++ /dev/null @@ -1,7 +0,0 @@ -#![feature(const_trait_impl)] -#![feature(associated_type_bounds)] - -struct TildeQuestion<T: ~const ?Sized>(std::marker::PhantomData<T>); -//~^ ERROR `~const` and `?` are mutually exclusive - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr deleted file mode 100644 index d20f146df..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-const-invalid-places.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: `~const` and `?` are mutually exclusive - --> $DIR/tilde-const-invalid-places.rs:4:25 - | -LL | struct TildeQuestion<T: ~const ?Sized>(std::marker::PhantomData<T>); - | ^^^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs deleted file mode 100644 index 9b3c2cf2a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-const-syntax.rs +++ /dev/null @@ -1,9 +0,0 @@ -// compile-flags: -Z parse-only -// check-pass - -#![feature(const_trait_impl)] - -struct S< - T: ~const ?for<'a> Tr<'a> + 'static + ~const std::ops::Add, - T: ~const ?for<'a: 'b> m::Trait<'a>, ->; diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-twice.rs b/tests/ui/rfc-2632-const-trait-impl/tilde-twice.rs deleted file mode 100644 index 06e4ede8b..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-twice.rs +++ /dev/null @@ -1,6 +0,0 @@ -// compile-flags: -Z parse-only - -#![feature(const_trait_impl)] - -struct S<T: ~const ~const Tr>; -//~^ ERROR expected identifier, found `~` diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde-twice.stderr b/tests/ui/rfc-2632-const-trait-impl/tilde-twice.stderr deleted file mode 100644 index 928d23e8a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde-twice.stderr +++ /dev/null @@ -1,8 +0,0 @@ -error: expected identifier, found `~` - --> $DIR/tilde-twice.rs:5:20 - | -LL | struct S<T: ~const ~const Tr>; - | ^ expected identifier - -error: aborting due to previous error - diff --git a/tests/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs b/tests/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs deleted file mode 100644 index 285cef571..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/tilde_const_on_impl_bound.rs +++ /dev/null @@ -1,17 +0,0 @@ -// check-pass -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo { - fn foo(&self) {} -} - -struct Bar<T>(T); - -impl<T: ~const Foo> Bar<T> { - const fn foo(&self) { - self.0.foo() - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs b/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs deleted file mode 100644 index 8d56295e7..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.rs +++ /dev/null @@ -1,50 +0,0 @@ -// known-bug: #110395 - -#![feature(staged_api)] -#![feature(const_trait_impl)] -#![feature(const_t_try)] -#![feature(const_try)] -#![feature(try_trait_v2)] - -#![stable(feature = "foo", since = "1.0")] - -use std::ops::{ControlFlow, FromResidual, Try}; - -#[stable(feature = "foo", since = "1.0")] -pub struct T; - -#[stable(feature = "foo", since = "1.0")] -#[rustc_const_unstable(feature = "const_t_try", issue = "none")] -impl const Try for T { - type Output = T; - type Residual = T; - - fn from_output(t: T) -> T { - t - } - - fn branch(self) -> ControlFlow<T, T> { - ControlFlow::Continue(self) - } -} - -#[stable(feature = "foo", since = "1.0")] -#[rustc_const_unstable(feature = "const_t_try", issue = "none")] -impl const FromResidual for T { - fn from_residual(t: T) -> T { - t - } -} - -#[stable(feature = "foo", since = "1.0")] -#[const_trait] -pub trait Tr { - #[stable(feature = "foo", since = "1.0")] - fn bar() -> T { - T? - // Should be allowed. - // Must enable unstable features to call this trait fn in const contexts. - } -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.stderr b/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.stderr deleted file mode 100644 index 35dc1ca12..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-default-body-stability.stderr +++ /dev/null @@ -1,20 +0,0 @@ -error: const `impl` for trait `Try` which is not marked with `#[const_trait]` - --> $DIR/trait-default-body-stability.rs:18:12 - | -LL | impl const Try for T { - | ^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: const `impl` for trait `FromResidual` which is not marked with `#[const_trait]` - --> $DIR/trait-default-body-stability.rs:33:12 - | -LL | impl const FromResidual for T { - | ^^^^^^^^^^^^ - | - = note: marking a trait with `#[const_trait]` ensures all default method bodies are `const` - = note: adding a non-const method body in the future would be a breaking change - -error: aborting due to 2 previous errors - diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-method-ptr-in-consts-ice.rs b/tests/ui/rfc-2632-const-trait-impl/trait-method-ptr-in-consts-ice.rs deleted file mode 100644 index 7d7cb967c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-method-ptr-in-consts-ice.rs +++ /dev/null @@ -1,23 +0,0 @@ -// check-pass - -struct LazyLock<T> { - data: (Option<T>, fn() -> T), -} - -impl<T> LazyLock<T> { - pub const fn new(f: fn() -> T) -> LazyLock<T> { - LazyLock { data: (None, f) } - } -} - -struct A<T = i32>(Option<T>); - -impl<T> Default for A<T> { - fn default() -> Self { - A(None) - } -} - -static EMPTY_SET: LazyLock<A<i32>> = LazyLock::new(A::default); - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs deleted file mode 100644 index bfe98b98c..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.rs +++ /dev/null @@ -1,31 +0,0 @@ -// Like trait-where-clause.rs, but we are calling from a const context. -// Checking the validity of traits' where clauses happen at a later stage. -// (`rustc_const_eval` instead of `rustc_hir_analysis`) Therefore one file as a -// test is not enough. -#![feature(const_trait_impl)] - -#[const_trait] -trait Bar {} - -#[const_trait] -trait Foo { - fn a(); - fn b() where Self: ~const Bar; - fn c<T: ~const Bar>(); -} - -const fn test1<T: ~const Foo + Bar>() { - T::a(); - T::b(); - //~^ ERROR the trait bound - T::c::<T>(); - //~^ ERROR the trait bound -} - -const fn test2<T: ~const Foo + ~const Bar>() { - T::a(); - T::b(); - T::c::<T>(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr deleted file mode 100644 index f2846b6a6..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-const.stderr +++ /dev/null @@ -1,35 +0,0 @@ -error[E0277]: the trait bound `T: ~const Bar` is not satisfied - --> $DIR/trait-where-clause-const.rs:19:5 - | -LL | T::b(); - | ^^^^^^ the trait `~const Bar` is not implemented for `T` - | -note: the trait `Bar` is implemented for `T`, but that implementation is not `const` - --> $DIR/trait-where-clause-const.rs:19:5 - | -LL | T::b(); - | ^^^^^^ -help: consider further restricting this bound - | -LL | const fn test1<T: ~const Foo + Bar + ~const Bar>() { - | ++++++++++++ - -error[E0277]: the trait bound `T: ~const Bar` is not satisfied - --> $DIR/trait-where-clause-const.rs:21:5 - | -LL | T::c::<T>(); - | ^^^^^^^^^^^ the trait `~const Bar` is not implemented for `T` - | -note: the trait `Bar` is implemented for `T`, but that implementation is not `const` - --> $DIR/trait-where-clause-const.rs:21:5 - | -LL | T::c::<T>(); - | ^^^^^^^^^^^ -help: consider further restricting this bound - | -LL | const fn test1<T: ~const Foo + Bar + ~const Bar>() { - | ++++++++++++ - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs deleted file mode 100644 index 4b8b00406..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-run.rs +++ /dev/null @@ -1,41 +0,0 @@ -// run-pass - -#![feature(const_trait_impl)] - -#[const_trait] -trait Bar { - fn bar() -> u8; -} - -#[const_trait] -trait Foo { - fn foo() -> u8 where Self: ~const Bar { - <Self as Bar>::bar() * 6 - } -} - -struct NonConst; -struct Const; - -impl Bar for NonConst { - fn bar() -> u8 { - 3 - } -} - -impl Foo for NonConst {} - -impl const Bar for Const { - fn bar() -> u8 { - 4 - } -} - -impl const Foo for Const {} - -fn main() { - const ANS1: u8 = Const::foo(); - let ans2 = NonConst::foo(); - - assert_eq!(ANS1 + ans2, 42); -} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs deleted file mode 100644 index 3b028ac48..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause-self-referential.rs +++ /dev/null @@ -1,24 +0,0 @@ -// check-pass - -#![feature(const_trait_impl)] - -#[const_trait] -trait Foo { - fn bar() where Self: ~const Foo; -} - -struct S; - -impl Foo for S { - fn bar() {} -} - -fn baz<T: Foo>() { - T::bar(); -} - -const fn qux<T: ~const Foo>() { - T::bar(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.rs b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.rs deleted file mode 100644 index 85ca5fc90..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.rs +++ /dev/null @@ -1,26 +0,0 @@ -#![feature(const_trait_impl)] - -#[const_trait] -trait Bar {} - -trait Foo { - fn a(); - fn b() where Self: ~const Bar; - fn c<T: ~const Bar>(); -} - -fn test1<T: Foo>() { - T::a(); - T::b(); - //~^ ERROR the trait bound - T::c::<T>(); - //~^ ERROR the trait bound -} - -fn test2<T: Foo + Bar>() { - T::a(); - T::b(); - T::c::<T>(); -} - -fn main() {} diff --git a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr b/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr deleted file mode 100644 index 11f0c4016..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/trait-where-clause.stderr +++ /dev/null @@ -1,35 +0,0 @@ -error[E0277]: the trait bound `T: Bar` is not satisfied - --> $DIR/trait-where-clause.rs:14:5 - | -LL | T::b(); - | ^^^^ the trait `Bar` is not implemented for `T` - | -note: required by a bound in `Foo::b` - --> $DIR/trait-where-clause.rs:8:24 - | -LL | fn b() where Self: ~const Bar; - | ^^^^^^^^^^ required by this bound in `Foo::b` -help: consider further restricting this bound - | -LL | fn test1<T: Foo + Bar>() { - | +++++ - -error[E0277]: the trait bound `T: Bar` is not satisfied - --> $DIR/trait-where-clause.rs:16:12 - | -LL | T::c::<T>(); - | ^ the trait `Bar` is not implemented for `T` - | -note: required by a bound in `Foo::c` - --> $DIR/trait-where-clause.rs:9:13 - | -LL | fn c<T: ~const Bar>(); - | ^^^^^^^^^^ required by this bound in `Foo::c` -help: consider further restricting this bound - | -LL | fn test1<T: Foo + Bar>() { - | +++++ - -error: aborting due to 2 previous errors - -For more information about this error, try `rustc --explain E0277`. diff --git a/tests/ui/rfc-2632-const-trait-impl/without-tilde.rs b/tests/ui/rfc-2632-const-trait-impl/without-tilde.rs deleted file mode 100644 index d63381b5f..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/without-tilde.rs +++ /dev/null @@ -1,6 +0,0 @@ -// compile-flags: -Z parse-only - -#![feature(const_trait_impl)] - -struct S<T: const Tr>; -//~^ ERROR const bounds must start with `~` diff --git a/tests/ui/rfc-2632-const-trait-impl/without-tilde.stderr b/tests/ui/rfc-2632-const-trait-impl/without-tilde.stderr deleted file mode 100644 index 31300354a..000000000 --- a/tests/ui/rfc-2632-const-trait-impl/without-tilde.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: const bounds must start with `~` - --> $DIR/without-tilde.rs:5:13 - | -LL | struct S<T: const Tr>; - | -^^^^ - | | - | help: add `~`: `~` - -error: aborting due to previous error - |