-
Notifications
You must be signed in to change notification settings - Fork 12.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
42 changed files
with
221 additions
and
240 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
42 changes: 35 additions & 7 deletions
42
tests/ui/const-generics/generic_const_exprs/unify-op-with-fn-call.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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); | ||
| | ||
|
||
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); | ||
| | ||
= 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: aborting due to 3 previous errors | ||
|
||
For more information about this error, try `rustc --explain E0741`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
2 changes: 1 addition & 1 deletion
2
tests/ui/rfcs/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
#![feature(const_trait_impl)] | ||
#![feature(const_trait_impl, effects)] | ||
|
||
#[const_trait] | ||
pub trait MyTrait { | ||
|
2 changes: 1 addition & 1 deletion
2
tests/ui/rfcs/rfc-2632-const-trait-impl/auxiliary/staged-api.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 4 additions & 4 deletions
8
tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`. |
28 changes: 16 additions & 12 deletions
28
tests/ui/rfcs/rfc-2632-const-trait-impl/call-const-trait-method-pass.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | impl const std::ops::Add for Int { | ||
| ^^^^^^^^^^^^^ | ||
LL | a.plus(b) | ||
| ^^^^^^^ | ||
| | ||
= 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 `PartialEq` which is not marked with `#[const_trait]` | ||
--> $DIR/call-const-trait-method-pass.rs:15:12 | ||
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); | ||
| ^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
LL | impl const PartialEq for Int { | ||
| ^^^^^^^^^ | ||
note: impl defined here, but it is not `const` | ||
--> $DIR/call-const-trait-method-pass.rs:7:1 | ||
| | ||
= 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 | impl const std::ops::Add for Int { | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
= 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`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 1 addition & 10 deletions
11
tests/ui/rfcs/rfc-2632-const-trait-impl/call-generic-method-pass.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
|
27 changes: 16 additions & 11 deletions
27
tests/ui/rfcs/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`. |
2 changes: 1 addition & 1 deletion
2
tests/ui/rfcs/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
#![feature(const_trait_impl)] | ||
#![feature(const_trait_impl, effects)] | ||
|
||
struct S; | ||
#[const_trait] | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
8 changes: 4 additions & 4 deletions
8
tests/ui/rfcs/rfc-2632-const-trait-impl/const-default-method-bodies.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.