blob: f7a9d362dd9ca84de107528fce0ddc3b00082596 [file] [edit]
#![feature(fn_delegation)]
struct S<A, const C: usize> {
xd: [A; C],
}
impl<'a, 'b, 'c, A, const C: usize> S<A, C> {
fn foo_static<'d: 'd, 'e, T, const B: bool>() {}
fn foo_self<'d: 'd, 'e, T, const B: bool>(self) {}
}
reuse S::<(), 1>::foo_static::<'static, (), true> as foo_static_1;
reuse S::<(), 1>::foo_static as foo_static_3;
reuse S::<usize, 1>::foo_static::<'static, _, _> as foo_static_4;
reuse S::<(), 1>::foo_self::<'static, (), true> as foo_self_1;
reuse S::<(), 1>::foo_self as foo_self_3;
reuse S::<String, 1>::foo_self::<'static, _, _> as foo_self_4;
trait Trait<'a, AA, BB> where Self: Sized {
reuse S::<(), 1>::foo_static::<'static, (), true> as foo_static_1;
reuse S::<(), 1>::foo_static as foo_static_3;
reuse S::<(), 1>::foo_static::<'static, _, _> as foo_static_4;
fn get_s(self) -> S<(), 1> {
panic!();
}
reuse S::<(), 1>::foo_self::<'static, (), true> as foo_self_1 { self.get_s() }
reuse S::<(), 1>::foo_self as foo_self_3 { self.get_s() }
reuse S::<(), 1>::foo_self::<'static, _, _> as foo_self_4;
//~^ ERROR: mismatched types [E0308]
}
struct X;
impl<'a, A, B> Trait<'a, A, B> for X {
reuse S::<(), 1>::foo_static::<'static, (), true> as foo_static_1;
reuse S::<(), 1>::foo_static as foo_static_3;
reuse S::<(), 1>::foo_static::<'static, _, _> as foo_static_4;
//~^ ERROR: type annotations needed [E0284]
reuse S::<(), 1>::foo_self::<'static, (), true> as foo_self_1 { self.get_s() }
reuse S::<(), 1>::foo_self as foo_self_3 { self.get_s() }
reuse S::<(), 1>::foo_self::<'static, _, _> as foo_self_4;
//~^ ERROR: mismatched types [E0308]
}
impl X {
reuse S::<(), 1>::foo_static::<'static, (), true> as foo_static_1;
reuse S::<(), 1>::foo_static as foo_static_3;
reuse S::<(), 1>::foo_static::<'static, _, _> as foo_static_4;
fn get_s(self) -> S<(), 1> {
panic!();
}
reuse S::<(), 1>::foo_self::<'static, (), true> as foo_self_1 { self.get_s() }
reuse S::<(), 1>::foo_self as foo_self_3 { self.get_s() }
reuse S::<(), 1>::foo_self::<'static, _, _> as foo_self_4;
//~^ ERROR: mismatched types [E0308]
}
fn main() {}