blob: 13ac3d31d838aef62622546f2d9d61d064dfd668 [file] [log] [blame] [edit]
//@ check-pass
#![feature(type_alias_impl_trait)]
mod foo {
pub trait Foo {
// This was reachable in https://github.com/rust-lang/rust/issues/100800
fn foo(&self) {
unreachable!()
}
}
impl<T> Foo for T {}
pub struct B;
impl B {
fn foo(&self) {}
}
pub type Input = impl Foo;
fn bop() -> Input {
super::run1(|x: B| x.foo(), B);
super::run2(|x: B| x.foo(), B);
panic!()
}
}
use foo::*;
fn run1<F: FnOnce(Input)>(f: F, i: Input) {
f(i)
}
fn run2<F: FnOnce(B)>(f: F, i: B) {
f(i)
}
fn main() {}