=== tests/cases/compiler/recursiveTypeComparison.ts === // Before fix this would take an exceeding long time to complete (#1170) interface Observable { >Observable : Symbol(Observable, Decl(recursiveTypeComparison.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) // This member can't be of type T, Property, or Observable needThisOne: Observable; >needThisOne : Symbol(needThisOne, Decl(recursiveTypeComparison.ts, 2, 25)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) // Add more to make it slower expo1: Property; // 0.31 seconds in check >expo1 : Symbol(expo1, Decl(recursiveTypeComparison.ts, 4, 31)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) expo2: Property; // 3.11 seconds >expo2 : Symbol(expo2, Decl(recursiveTypeComparison.ts, 6, 25)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) expo3: Property; // 82.28 seconds >expo3 : Symbol(expo3, Decl(recursiveTypeComparison.ts, 7, 25)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 2, 21)) } interface Property extends Observable { } >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 10, 19)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison.ts, 0, 0)) >T : Symbol(T, Decl(recursiveTypeComparison.ts, 10, 19)) var p: Observable<{}>; >p : Symbol(p, Decl(recursiveTypeComparison.ts, 12, 3)) >Observable : Symbol(Observable, Decl(recursiveTypeComparison.ts, 0, 0)) var stuck: Property = p; >stuck : Symbol(stuck, Decl(recursiveTypeComparison.ts, 13, 3)) >Property : Symbol(Property, Decl(recursiveTypeComparison.ts, 9, 1)) >p : Symbol(p, Decl(recursiveTypeComparison.ts, 12, 3))