bless tests
This commit is contained in:
parent
92f4c59e48
commit
6c1e3bb6e9
@ -1,6 +1,6 @@
|
||||
// build-pass
|
||||
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
trait Func<T> {
|
||||
|
@ -1,11 +1,39 @@
|
||||
error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
|
||||
--> $DIR/unify-op-with-fn-call.rs:10:12
|
||||
error[E0741]: `Foo` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
--> $DIR/unify-op-with-fn-call.rs:18:29
|
||||
|
|
||||
LL | impl const std::ops::Add for Foo {
|
||||
| ^^^^^^^^^^^^^
|
||||
LL | struct Evaluatable<const N: Foo>;
|
||||
| ^^^
|
||||
|
|
||||
help: add `#[derive(ConstParamTy)]` to the struct
|
||||
|
|
||||
LL + #[derive(ConstParamTy)]
|
||||
LL | struct Foo(u8);
|
||||
|
|
||||
= 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
|
||||
error[E0741]: `Foo` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
--> $DIR/unify-op-with-fn-call.rs:20:17
|
||||
|
|
||||
LL | fn foo<const N: Foo>(a: Evaluatable<{ N + N }>) {
|
||||
| ^^^
|
||||
|
|
||||
help: add `#[derive(ConstParamTy)]` to the struct
|
||||
|
|
||||
LL + #[derive(ConstParamTy)]
|
||||
LL | struct Foo(u8);
|
||||
|
|
||||
|
||||
error[E0741]: `Foo` must implement `ConstParamTy` to be used as the type of a const generic parameter
|
||||
--> $DIR/unify-op-with-fn-call.rs:24:17
|
||||
|
|
||||
LL | fn bar<const N: Foo>() {}
|
||||
| ^^^
|
||||
|
|
||||
help: add `#[derive(ConstParamTy)]` to the struct
|
||||
|
|
||||
LL + #[derive(ConstParamTy)]
|
||||
LL | struct Foo(u8);
|
||||
|
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0741`.
|
||||
|
@ -1,20 +1,29 @@
|
||||
error: const `impl` for trait `FromResidual` which is not marked with `#[const_trait]`
|
||||
--> $DIR/const-try.rs:15:12
|
||||
error[E0015]: `?` cannot determine the branch of `TryMe` in constant functions
|
||||
--> $DIR/const-try.rs:33:5
|
||||
|
|
||||
LL | impl const FromResidual<Error> for TryMe {
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
LL | TryMe?;
|
||||
| ^^^^^^
|
||||
|
|
||||
= 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 `Try` which is not marked with `#[const_trait]`
|
||||
--> $DIR/const-try.rs:21:12
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/const-try.rs:21:1
|
||||
|
|
||||
LL | impl const Try for TryMe {
|
||||
| ^^^
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: `?` cannot convert from residual of `TryMe` in constant functions
|
||||
--> $DIR/const-try.rs:33:5
|
||||
|
|
||||
= 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
|
||||
LL | TryMe?;
|
||||
| ^^^^^^
|
||||
|
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/const-try.rs:15:1
|
||||
|
|
||||
LL | impl const FromResidual<Error> for TryMe {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![feature(staged_api)]
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![stable(feature = "foo", since = "1.0.0")]
|
||||
|
||||
#[stable(feature = "potato", since = "1.27.0")]
|
||||
|
@ -7,5 +7,22 @@ LL | impl const Default for Data {
|
||||
= 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
|
||||
error[E0107]: missing generics for trait `Default`
|
||||
--> $DIR/rustc-impl-const-stability.rs:15:12
|
||||
|
|
||||
LL | impl const Default for Data {
|
||||
| ^^^^^^^ expected 18446744073709551615 generic arguments
|
||||
|
||||
error[E0207]: the const parameter `host` is not constrained by the impl trait, self type, or predicates
|
||||
--> $DIR/rustc-impl-const-stability.rs:15:6
|
||||
|
|
||||
LL | impl const Default for Data {
|
||||
| ^^^^^ unconstrained const parameter
|
||||
|
|
||||
= note: expressions using a const parameter must map each value to a distinct output value
|
||||
= note: proving the result of expressions other than the parameter are unique is not supported
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0107, E0207.
|
||||
For more information about an error, try `rustc --explain E0107`.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
pub trait MyTrait {
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![feature(staged_api)]
|
||||
#![stable(feature = "rust1", since = "1.0.0")]
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
pub trait Plus {
|
||||
@ -23,7 +23,7 @@ pub const fn add_i32(a: i32, b: i32) -> i32 {
|
||||
|
||||
pub const fn add_u32(a: u32, b: u32) -> u32 {
|
||||
a.plus(b)
|
||||
//~^ ERROR cannot call
|
||||
//~^ ERROR the trait bound
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,11 +1,11 @@
|
||||
error[E0015]: cannot call non-const fn `<u32 as Plus>::plus` in constant functions
|
||||
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 `Plus` is not implemented for `u32`
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= help: the trait `Plus` is implemented for `u32`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
@ -1,20 +1,24 @@
|
||||
error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
|
||||
--> $DIR/call-const-trait-method-pass.rs:7:12
|
||||
error[E0015]: cannot call non-const fn `<i32 as Plus>::plus` in constant functions
|
||||
--> $DIR/call-const-trait-method-pass.rs:36:7
|
||||
|
|
||||
LL | a.plus(b)
|
||||
| ^^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot call non-const operator in constants
|
||||
--> $DIR/call-const-trait-method-pass.rs:39:22
|
||||
|
|
||||
LL | const ADD_INT: Int = Int(1i32) + Int(2i32);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/call-const-trait-method-pass.rs:7:1
|
||||
|
|
||||
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
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
@ -1,12 +1,3 @@
|
||||
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
|
||||
|
|
||||
@ -19,5 +10,5 @@ error: ~const can only be applied to `#[const_trait]` traits
|
||||
LL | const fn equals_self_wrapper<T: ~const PartialEq>(t: &T) -> bool {
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -1,12 +1,3 @@
|
||||
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
|
||||
|
|
||||
@ -19,5 +10,5 @@ error: ~const can only be applied to `#[const_trait]` traits
|
||||
LL | const fn equals_self2<T: A + ~const PartialEq>(t: &T) -> bool {
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -1,17 +1,8 @@
|
||||
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
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -1,20 +1,25 @@
|
||||
error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
|
||||
--> $DIR/const-and-non-const-impl.rs:7:12
|
||||
error[E0117]: only traits defined in the current crate can be implemented for primitive types
|
||||
--> $DIR/const-and-non-const-impl.rs:7:1
|
||||
|
|
||||
LL | impl const std::ops::Add for i32 {
|
||||
| ^^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^-------------^^^^^---
|
||||
| | | |
|
||||
| | | `i32` is not defined in the current crate
|
||||
| | `i32` is not defined in the current crate
|
||||
| impl doesn't use only types from inside the current crate
|
||||
|
|
||||
= 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: define and implement a trait or new type instead
|
||||
|
||||
error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
|
||||
--> $DIR/const-and-non-const-impl.rs:23:12
|
||||
error[E0119]: conflicting implementations of trait `Add` for type `Int`
|
||||
--> $DIR/const-and-non-const-impl.rs:23:1
|
||||
|
|
||||
LL | impl std::ops::Add for Int {
|
||||
| -------------------------- first implementation here
|
||||
...
|
||||
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
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Int`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0117, E0119.
|
||||
For more information about an error, try `rustc --explain E0117`.
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
struct S;
|
||||
#[const_trait]
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
trait ConstDefaultFn: Sized {
|
||||
@ -22,7 +22,7 @@ impl const ConstDefaultFn for ConstImpl {
|
||||
|
||||
const fn test() {
|
||||
NonConstImpl.a();
|
||||
//~^ ERROR cannot call
|
||||
//~^ ERROR the trait bound
|
||||
ConstImpl.a();
|
||||
}
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
error[E0015]: cannot call non-const fn `<NonConstImpl as ConstDefaultFn>::a` in constant functions
|
||||
error[E0277]: the trait bound `NonConstImpl: ~const ConstDefaultFn` is not satisfied
|
||||
--> $DIR/const-default-method-bodies.rs:24:18
|
||||
|
|
||||
LL | NonConstImpl.a();
|
||||
| ^^^
|
||||
| ^ the trait `ConstDefaultFn` is not implemented for `NonConstImpl`
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= help: the trait `ConstDefaultFn` is implemented for `NonConstImpl`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
@ -1,5 +1,5 @@
|
||||
// known-bug: #110395
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_mut_refs)]
|
||||
#![cfg_attr(precise, feature(const_precise_live_drops))]
|
||||
|
||||
@ -18,6 +18,10 @@ trait A { fn a() { } }
|
||||
|
||||
impl A for NonTrivialDrop {}
|
||||
|
||||
const fn check<T: ~const Destruct>(_: T) {}
|
||||
|
||||
|
||||
/* FIXME(effects)
|
||||
struct ConstDropImplWithBounds<T: ~const A>(PhantomData<T>);
|
||||
|
||||
impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> {
|
||||
@ -26,11 +30,10 @@ impl<T: ~const A> const Drop for ConstDropImplWithBounds<T> {
|
||||
}
|
||||
}
|
||||
|
||||
const fn check<T: ~const Destruct>(_: T) {}
|
||||
|
||||
const _: () = check::<ConstDropImplWithBounds<NonTrivialDrop>>(
|
||||
ConstDropImplWithBounds(PhantomData)
|
||||
);
|
||||
*/
|
||||
|
||||
struct ConstDropImplWithNonConstBounds<T: A>(PhantomData<T>);
|
||||
|
||||
|
@ -1,28 +1,11 @@
|
||||
error[E0015]: cannot call non-const fn `<T as A>::a` in constant functions
|
||||
--> $DIR/const-drop-fail-2.rs:25:9
|
||||
|
|
||||
LL | T::a();
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0493]: destructor of `T` cannot be evaluated at compile-time
|
||||
--> $DIR/const-drop-fail-2.rs:29:36
|
||||
--> $DIR/const-drop-fail-2.rs:21:36
|
||||
|
|
||||
LL | const fn check<T: ~const Destruct>(_: T) {}
|
||||
| ^ - value is dropped here
|
||||
| |
|
||||
| the destructor for this type cannot be evaluated in constant functions
|
||||
|
||||
error[E0015]: cannot call non-const fn `<T as A>::a` in constant functions
|
||||
--> $DIR/const-drop-fail-2.rs:39:9
|
||||
|
|
||||
LL | T::a();
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
error: aborting due to previous error
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0015, E0493.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0493`.
|
||||
|
@ -14,15 +14,6 @@ LL | let _ = S(&mut c);
|
||||
| |
|
||||
| the destructor for this type cannot be evaluated in constant functions
|
||||
|
||||
error[E0015]: cannot call non-const fn `<T as SomeTrait>::foo` in constant functions
|
||||
--> $DIR/const-drop.rs:70:13
|
||||
|
|
||||
LL | T::foo();
|
||||
| ^^^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0015, E0493.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0493`.
|
||||
|
@ -14,15 +14,6 @@ LL | let _ = S(&mut c);
|
||||
| |
|
||||
| the destructor for this type cannot be evaluated in constant functions
|
||||
|
||||
error[E0015]: cannot call non-const fn `<T as SomeTrait>::foo` in constant functions
|
||||
--> $DIR/const-drop.rs:70:13
|
||||
|
|
||||
LL | T::foo();
|
||||
| ^^^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0015, E0493.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0493`.
|
||||
|
@ -1,9 +1,11 @@
|
||||
#![feature(const_trait_impl)]
|
||||
// known-bug: #110395
|
||||
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
pub trait A {}
|
||||
//~^ HELP: mark `A` as const
|
||||
// FIXME ~^ HELP: mark `A` as const
|
||||
|
||||
impl const A for () {}
|
||||
//~^ ERROR: const `impl` for trait `A` which is not marked with `#[const_trait]`
|
||||
// FIXME ~^ ERROR: const `impl` for trait `A` which is not marked with `#[const_trait]`
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: const `impl` for trait `A` which is not marked with `#[const_trait]`
|
||||
--> $DIR/const-impl-requires-const-trait.rs:6:12
|
||||
--> $DIR/const-impl-requires-const-trait.rs:8:12
|
||||
|
|
||||
LL | pub trait A {}
|
||||
| - help: mark `A` as const: `#[const_trait]`
|
||||
@ -10,5 +10,18 @@ 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
|
||||
error[E0107]: missing generics for trait `A`
|
||||
--> $DIR/const-impl-requires-const-trait.rs:8:12
|
||||
|
|
||||
LL | impl const A for () {}
|
||||
| ^ expected 18446744073709551615 generic arguments
|
||||
|
|
||||
note: trait defined here, with 18446744073709551615 generic parameters:
|
||||
--> $DIR/const-impl-requires-const-trait.rs:5:11
|
||||
|
|
||||
LL | pub trait A {}
|
||||
| ^
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0107`.
|
||||
|
@ -1,5 +1,4 @@
|
||||
#[derive_const(Default)] //~ ERROR use of unstable library feature
|
||||
//~^ ERROR not marked with `#[const_trait]`
|
||||
pub struct S;
|
||||
|
||||
fn main() {}
|
||||
|
@ -6,16 +6,6 @@ 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
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0658`.
|
||||
|
@ -1,5 +1,5 @@
|
||||
// known-bug: #110395
|
||||
#![feature(derive_const)]
|
||||
#![feature(derive_const, effects)]
|
||||
|
||||
pub struct A;
|
||||
|
||||
|
@ -8,5 +8,14 @@ LL | #[derive_const(Default)]
|
||||
= 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
|
||||
error[E0107]: missing generics for trait `Default`
|
||||
--> $DIR/derive-const-non-const-type.rs:10:16
|
||||
|
|
||||
LL | #[derive_const(Default)]
|
||||
| ^^^^^^^ expected 18446744073709551615 generic arguments
|
||||
|
|
||||
= 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 E0107`.
|
||||
|
@ -10,44 +10,6 @@ error[E0635]: unknown feature `const_default_impls`
|
||||
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
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0635`.
|
||||
|
@ -1,13 +1,3 @@
|
||||
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
|
||||
|
|
||||
@ -16,5 +6,5 @@ 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
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
error[E0015]: cannot call non-const fn `<cross_crate::NonConst as cross_crate::MyTrait>::func` in constant functions
|
||||
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 `cross_crate::MyTrait` is not implemented for `cross_crate::NonConst`
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= help: the trait `cross_crate::MyTrait` is implemented for `cross_crate::NonConst`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
@ -1,6 +1,6 @@
|
||||
// revisions: stock gated stocknc gatednc
|
||||
// [gated] check-pass
|
||||
#![cfg_attr(any(gated, gatednc), feature(const_trait_impl))]
|
||||
#![cfg_attr(any(gated, gatednc), feature(const_trait_impl, effects))]
|
||||
|
||||
// aux-build: cross-crate.rs
|
||||
extern crate cross_crate;
|
||||
@ -16,7 +16,7 @@ const fn const_context() {
|
||||
#[cfg(any(stocknc, gatednc))]
|
||||
NonConst.func();
|
||||
//[stocknc]~^ ERROR: cannot call
|
||||
//[gatednc]~^^ ERROR: cannot call
|
||||
//[gatednc]~^^ ERROR: the trait bound
|
||||
Const.func();
|
||||
//[stock]~^ ERROR: cannot call
|
||||
//[stocknc]~^^ ERROR: cannot call
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0277]: the trait bound `(): Tr` is not satisfied
|
||||
error[E0277]: the trait bound `(): ~const Tr` is not satisfied
|
||||
--> $DIR/default-method-body-is-const-same-trait-ck.rs:8:12
|
||||
|
|
||||
LL | ().a()
|
||||
|
@ -1,5 +1,5 @@
|
||||
// check-pass
|
||||
#![feature(const_trait_impl, rustc_attrs)]
|
||||
#![feature(const_trait_impl, rustc_attrs, effects)]
|
||||
|
||||
#[const_trait]
|
||||
trait Foo {
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
// ensure we are passing in the correct host effect in always const contexts.
|
||||
|
||||
pub const fn hmm</* T, */ #[rustc_host] const host: bool = true>() -> usize {
|
||||
pub const fn hmm<T, #[rustc_host] const host: bool = true>() -> usize {
|
||||
if host {
|
||||
1
|
||||
} else {
|
||||
@ -16,14 +16,12 @@ pub const fn hmm</* T, */ #[rustc_host] const host: bool = true>() -> usize {
|
||||
}
|
||||
|
||||
const _: () = {
|
||||
let x = hmm();
|
||||
let x = hmm::<()>();
|
||||
assert!(0 == x);
|
||||
};
|
||||
|
||||
/* FIXME(effects)
|
||||
pub const fn uwu(x: [u8; hmm::<()>()]) {
|
||||
let [] = x;
|
||||
}
|
||||
*/
|
||||
|
||||
fn main() {}
|
||||
|
@ -1,11 +1,16 @@
|
||||
error: const `impl` for trait `Add` which is not marked with `#[const_trait]`
|
||||
--> $DIR/generic-bound.rs:16:15
|
||||
error[E0015]: cannot call non-const operator in constant functions
|
||||
--> $DIR/generic-bound.rs:25:5
|
||||
|
|
||||
LL | arg + arg
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/generic-bound.rs:16:1
|
||||
|
|
||||
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
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= 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`.
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Regression test for #69615.
|
||||
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
pub trait MyTrait {
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Tests that specializing trait impls must be at least as const as the default impl.
|
||||
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![feature(min_specialization)]
|
||||
|
||||
#[const_trait]
|
||||
|
@ -1,4 +1,4 @@
|
||||
#![feature(const_trait_impl, min_specialization, rustc_attrs)]
|
||||
#![feature(const_trait_impl, effects, min_specialization, rustc_attrs)]
|
||||
|
||||
#[rustc_specialization_trait]
|
||||
#[const_trait]
|
||||
|
@ -1,7 +1,7 @@
|
||||
// revisions: stable unstable
|
||||
|
||||
#![cfg_attr(unstable, feature(unstable))] // The feature from the ./auxiliary/staged-api.rs file.
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![feature(staged_api)]
|
||||
#![stable(feature = "rust1", since = "1.0.0")]
|
||||
|
||||
|
@ -1,20 +1,29 @@
|
||||
error: const `impl` for trait `Try` which is not marked with `#[const_trait]`
|
||||
--> $DIR/trait-default-body-stability.rs:18:12
|
||||
error[E0015]: `?` cannot determine the branch of `T` in constant functions
|
||||
--> $DIR/trait-default-body-stability.rs:44:9
|
||||
|
|
||||
LL | T?
|
||||
| ^^
|
||||
|
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/trait-default-body-stability.rs:18:1
|
||||
|
|
||||
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
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: const `impl` for trait `FromResidual` which is not marked with `#[const_trait]`
|
||||
--> $DIR/trait-default-body-stability.rs:33:12
|
||||
error[E0015]: `?` cannot convert from residual of `T` in constant functions
|
||||
--> $DIR/trait-default-body-stability.rs:44:9
|
||||
|
|
||||
LL | T?
|
||||
| ^^
|
||||
|
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/trait-default-body-stability.rs:33:1
|
||||
|
|
||||
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
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
@ -1,7 +1,7 @@
|
||||
// known-bug: #110395
|
||||
// FIXME run-pass
|
||||
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
|
||||
#[const_trait]
|
||||
trait Bar {
|
||||
|
@ -1,5 +1,5 @@
|
||||
#![feature(staged_api)]
|
||||
#![feature(const_trait_impl)]
|
||||
#![feature(const_trait_impl, effects)]
|
||||
#![stable(feature = "stable", since = "1.0.0")]
|
||||
|
||||
#[stable(feature = "stable", since = "1.0.0")]
|
||||
|
Loading…
x
Reference in New Issue
Block a user