Closed
Description
Issue originally reported by @bcherny in #17036 (comment).
Repro:
interface A<B = A> {
a: B
}
Compiling the above causes a stack overflow:
RangeError: Maximum call stack size exceeded
at getSymbol (c:\ts\built\local\tsc.js:23459:27)
at resolveNameHelper (c:\ts\built\local\tsc.js:23710:38)
at resolveName (c:\ts\built\local\tsc.js:23596:20)
at resolveEntityName (c:\ts\built\local\tsc.js:24285:26)
at resolveTypeReferenceName (c:\ts\built\local\tsc.js:29082:20)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29179:30)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)
at getTypeFromClassOrInterfaceReference (c:\ts\built\local\tsc.js:28999:44)
at getTypeReferenceTypeWorker (c:\ts\built\local\tsc.js:29112:24)
at getTypeReferenceType (c:\ts\built\local\tsc.js:29089:24)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29180:28)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)
at getTypeFromClassOrInterfaceReference (c:\ts\built\local\tsc.js:28999:44)
at getTypeReferenceTypeWorker (c:\ts\built\local\tsc.js:29112:24)
at getTypeReferenceType (c:\ts\built\local\tsc.js:29089:24)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29180:28)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)
at getTypeFromClassOrInterfaceReference (c:\ts\built\local\tsc.js:28999:44)
at getTypeReferenceTypeWorker (c:\ts\built\local\tsc.js:29112:24)
at getTypeReferenceType (c:\ts\built\local\tsc.js:29089:24)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29180:28)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)
at getTypeFromClassOrInterfaceReference (c:\ts\built\local\tsc.js:28999:44)
at getTypeReferenceTypeWorker (c:\ts\built\local\tsc.js:29112:24)
at getTypeReferenceType (c:\ts\built\local\tsc.js:29089:24)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29180:28)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)
at getTypeFromClassOrInterfaceReference (c:\ts\built\local\tsc.js:28999:44)
at getTypeReferenceTypeWorker (c:\ts\built\local\tsc.js:29112:24)
at getTypeReferenceType (c:\ts\built\local\tsc.js:29089:24)
at getTypeFromTypeReference (c:\ts\built\local\tsc.js:29180:28)
at getTypeFromTypeNode (c:\ts\built\local\tsc.js:30072:28)
at getDefaultFromTypeParameter (c:\ts\built\local\tsc.js:28320:66)
at getMinTypeArgumentCount (c:\ts\built\local\tsc.js:28591:26)