class Subtype[S, T] where (S < T) {}
type Copyable[Slf] = {
copy(self: Slf) : Slf
} & (Slf < Copyable[Slf])
class C {
copy(self: C): C
}
let x : Subtype[C, Copyable[C]]
Checking that Subtype[C, Copyable[C]] is a valid type instantiation results in looping.
Checking that
Subtype[C, Copyable[C]]
is a valid type instantiation results in looping.