=== tests/cases/conformance/types/typeRelationships/recursiveTypes/nominalSubtypeCheckOfTypeParameter.ts === interface Tuple { >Tuple : Tuple >T : T >S : S first: T >first : T >T : T second: S >second : S >S : S } interface Sequence { >Sequence : Sequence >T : T hasNext(): boolean >hasNext : () => boolean pop(): T >pop : () => T >T : T zip(seq: Sequence): Sequence> >zip : (seq: Sequence) => Sequence> >S : S >seq : Sequence >Sequence : Sequence >S : S >Sequence : Sequence >Tuple : Tuple >T : T >S : S } // error, despite the fact that the code explicitly says List extends Sequence, the current rules for infinitely expanding type references // perform nominal subtyping checks that allow variance for type arguments, but not nominal subtyping for the generic type itself interface List extends Sequence { >List : List >T : T >Sequence : Sequence >T : T getLength(): number >getLength : () => number zip(seq: Sequence): List> >zip : (seq: Sequence) => List> >S : S >seq : Sequence >Sequence : Sequence >S : S >List : List >Tuple : Tuple >T : T >S : S }