// Issue #3902. We are (at least currently) unable to infer `Self` // based on `T`, even though there is only a single impl, because of // the possibility of associated types and other things (basically: no // constraints on `Self` here at all). mod base { pub trait HasNew { fn new() -> T; fn dummy(&self) { } } pub struct Foo { dummy: (), } impl HasNew for Foo { fn new() -> Foo { Foo { dummy: () } } } } pub fn foo() { let _f: base::Foo = base::HasNew::new(); //~^ ERROR E0790 } fn main() { }