Use a const ParamEnv when in default_method_body_is_const

This commit is contained in:
Deadbeef 2021-12-17 20:39:55 +08:00
parent 9b45f04414
commit a1f91aa410
No known key found for this signature in database
GPG key ID: 6D017A96D8E6C2F9
3 changed files with 43 additions and 1 deletions

View file

@ -0,0 +1,17 @@
#![feature(const_fn_trait_bound)]
#![feature(const_trait_impl)]
trait Tr {}
impl Tr for () {}
const fn foo<T>() where T: ~const Tr {}
pub trait Foo {
#[default_method_body_is_const]
fn foo() {
foo::<()>();
//~^ ERROR the trait bound `(): Tr` is not satisfied
}
}
fn main() {}

View file

@ -0,0 +1,19 @@
error[E0277]: the trait bound `(): Tr` is not satisfied
--> $DIR/default-method-body-is-const-body-checking.rs:12:15
|
LL | foo::<()>();
| ^^ the trait `Tr` is not implemented for `()`
|
note: required by a bound in `foo`
--> $DIR/default-method-body-is-const-body-checking.rs:7:28
|
LL | const fn foo<T>() where T: ~const Tr {}
| ^^^^^^^^^ required by this bound in `foo`
help: consider introducing a `where` bound, but there might be an alternative better way to express this requirement
|
LL | pub trait Foo where (): Tr {
| ++++++++++++
error: aborting due to previous error
For more information about this error, try `rustc --explain E0277`.