34 lines
488 B
Rust
34 lines
488 B
Rust
|
//@ revisions: current next
|
||
|
//@[next] compile-flags: -Znext-solver
|
||
|
//@ build-pass
|
||
|
|
||
|
// Regression test for incomplete handling of Fn-trait goals,
|
||
|
// fixed in #122267.
|
||
|
|
||
|
trait Trait {
|
||
|
type Assoc<'a>: FnOnce(&'a ());
|
||
|
}
|
||
|
|
||
|
impl Trait for () {
|
||
|
type Assoc<'a> = fn(&'a ());
|
||
|
}
|
||
|
|
||
|
trait Indir {
|
||
|
fn break_me() {}
|
||
|
}
|
||
|
|
||
|
impl<F: Trait> Indir for F
|
||
|
where
|
||
|
for<'a> F::Assoc<'a>: FnOnce(&'a ()),
|
||
|
{
|
||
|
fn break_me() {}
|
||
|
}
|
||
|
|
||
|
fn foo<F: Trait>() {
|
||
|
F::break_me()
|
||
|
}
|
||
|
|
||
|
fn main() {
|
||
|
foo::<()>();
|
||
|
}
|