rust/tests/ui/nll/issue-63154-normalize.rs

35 lines
580 B
Rust

// Regression test for rust-lang/rust#63154
//
// Before, we would ICE after failing to normalize the destination type
// when checking call destinations and also when checking MIR
// assignment statements.
//@ check-pass
trait HasAssocType {
type Inner;
}
impl HasAssocType for () {
type Inner = ();
}
trait Tr<I, T>: Fn(I) -> Option<T> {}
impl<I, T, Q: Fn(I) -> Option<T>> Tr<I, T> for Q {}
fn f<T: HasAssocType>() -> impl Tr<T, T::Inner> {
|_| None
}
fn g<T, Y>(f: impl Tr<T, Y>) -> impl Tr<T, Y> {
f
}
fn h() {
g(f())(());
}
fn main() {
h();
}