mirror of https://github.com/rust-lang/rust
33 lines
856 B
Rust
33 lines
856 B
Rust
// This test demonstrates an ICE that may occur when we try to resolve the instance
|
|
// of a impl that has different generics than the trait it's implementing. This ensures
|
|
// we first check that the args are compatible before resolving the body, just like
|
|
// we do in projection before substituting a GAT.
|
|
//
|
|
// Const traits aren't the only way to achieve this ICE, but it's a convenient way
|
|
// to ensure the inliner is called.
|
|
|
|
//@ compile-flags: -Znext-solver -Zinline-mir=yes
|
|
|
|
#![feature(const_trait_impl, effects)]
|
|
//~^ WARN the feature `effects` is incomplete
|
|
|
|
trait Trait {
|
|
fn foo(self);
|
|
}
|
|
|
|
impl Trait for () {
|
|
#[inline]
|
|
fn foo<T>(self) {
|
|
//~^ ERROR method `foo` has 1 type parameter but its trait declaration has 0 type parameters
|
|
todo!();
|
|
}
|
|
}
|
|
|
|
const fn foo() {
|
|
().foo();
|
|
}
|
|
|
|
const UWU: () = foo();
|
|
|
|
fn main() {}
|