/* The fact that this works is a design choice, since the type system cannot determine right now whether or not Array<'T> implements Test for every 'T. */ interface Test { fn test(v: Self); } fn test(v: Array) {} fn test(v: Array) {} implement Test for Array<'T>; fn test2(v: 'T [Test]) {} test2(arr()); test2(arr());