Repository navigation
Stackoverflow when compiling a specific getter method #48248
Copy link
Copy link
Closed
Labels
BugA bug in TypeScriptA bug in TypeScript
Description
Activity
RyanCavanaugh commented
on Mar 14, 2022 MemberMore actionsBisected to #45350, which seems odd
Reacted by Erik Krogh KristensenDanielRosenwasser commented
on Mar 16, 2022 MemberMore actionsFor context/searchability, here's the call stack:
<semantic> Response received: quickinfo (32). Request took 37 ms. Success: false . Message: Error processing request. Maximum call stack size exceeded RangeError: Maximum call stack size exceeded at hasSyntacticModifier ([node_modules_path]\typescript\lib\tsserver.js:18647:34) at hasStaticModifier ([node_modules_path]\typescript\lib\tsserver.js:18657:16) at Object.isStatic ([node_modules_path]\typescript\lib\tsserver.js:18653:43) at tryGetThisTypeAt ([node_modules_path]\typescript\lib\tsserver.js:71106:31) at checkThisExpression ([node_modules_path]\typescript\lib\tsserver.js:71059:24) at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:78937:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at maybeCheckExpression ([node_modules_path]\typescript\lib\tsserver.js:78005:38) at BinaryExpressionStateMachine.onLeft ([node_modules_path]\typescript\lib\tsserver.js:77955:28) at Array.left ([node_modules_path]\typescript\lib\tsserver.js:29962:36) at trampoline ([node_modules_path]\typescript\lib\tsserver.js:30095:52) at [node_modules_path]\typescript\lib\tsserver.js:77920:30 at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:79010:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16) at getReturnTypeFromBody ([node_modules_path]\typescript\lib\tsserver.js:76902:29) at resolveTypeOfAccessors ([node_modules_path]\typescript\lib\tsserver.js:55884:42) at getTypeOfAccessorsWorker ([node_modules_path]\typescript\lib\tsserver.js:55844:24) at getTypeOfSetAccessor ([node_modules_path]\typescript\lib\tsserver.js:55837:58) at getSetAccessorTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56062:28) at getWriteTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56058:20) at createUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58447:33) at getUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58499:28) at getPropertyOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:58508:28) at getPropertiesOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:57930:48) at getReducedType ([node_modules_path]\typescript\lib\tsserver.js:58525:34) at getNormalizedType ([node_modules_path]\typescript\lib\tsserver.js:63777:74) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64128:30) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64791:42) at recursiveTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64688:30) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64200:25) at checkTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63815:26) at isTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63766:24) at isTypeAssignableTo ([node_modules_path]\typescript\lib\tsserver.js:62973:20) at isTypeAssignableToKind ([node_modules_path]\typescript\lib\tsserver.js:77605:53) at allTypesAssignableToKind ([node_modules_path]\typescript\lib\tsserver.js:77616:17) at getPromisedTypeOfPromise ([node_modules_path]\typescript\lib\tsserver.js:80261:17) at getAwaitedTypeOfPromise ([node_modules_path]\typescript\lib\tsserver.js:80232:32) at helper ([node_modules_path]\typescript\lib\tsserver.js:81671:35) at checkTestingKnownTruthyCallableOrAwaitableType ([node_modules_path]\typescript\lib\tsserver.js:81651:13) at BinaryExpressionStateMachine.onOperator ([node_modules_path]\typescript\lib\tsserver.js:77968:29) at Array.operator ([node_modules_path]\typescript\lib\tsserver.js:29980:21) at trampoline ([node_modules_path]\typescript\lib\tsserver.js:30095:52) at [node_modules_path]\typescript\lib\tsserver.js:77920:30 at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:79010:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16) at getReturnTypeFromBody ([node_modules_path]\typescript\lib\tsserver.js:76902:29) at resolveTypeOfAccessors ([node_modules_path]\typescript\lib\tsserver.js:55884:42) at getTypeOfAccessorsWorker ([node_modules_path]\typescript\lib\tsserver.js:55844:24) at getTypeOfSetAccessor ([node_modules_path]\typescript\lib\tsserver.js:55837:58) at getSetAccessorTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56062:28) at getWriteTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56058:20) at createUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58447:33) at getUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58499:28) at getPropertyOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:58508:28) at getPropertiesOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:57930:48) at getReducedType ([node_modules_path]\typescript\lib\tsserver.js:58525:34) at getNormalizedType ([node_modules_path]\typescript\lib\tsserver.js:63777:74) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64128:30) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64791:42) at recursiveTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64688:30) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64200:25) at checkTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63815:26) at isTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63766:24) at isTypeAssignableTo ([node_modules_path]\typescript\lib\tsserver.js:62973:20) at isTypeAssignableToKind ([node_modules_path]\typescript\lib\tsserver.js:77605:53) at allTypesAssignableToKind ([node_modules_path]\typescript\lib\tsserver.js:77616:17) at getPromisedTypeOfPromise ([node_modules_path]\typescript\lib\tsserver.js:80261:17) at getAwaitedTypeOfPromise ([node_modules_path]\typescript\lib\tsserver.js:80232:32) at helper ([node_modules_path]\typescript\lib\tsserver.js:81671:35) at checkTestingKnownTruthyCallableOrAwaitableType ([node_modules_path]\typescript\lib\tsserver.js:81651:13) at BinaryExpressionStateMachine.onOperator ([node_modules_path]\typescript\lib\tsserver.js:77968:29) at Array.operator ([node_modules_path]\typescript\lib\tsserver.js:29980:21) at trampoline ([node_modules_path]\typescript\lib\tsserver.js:30095:52) at [node_modules_path]\typescript\lib\tsserver.js:77920:30 at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:79010:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16)RyanCavanaugh commented
on Mar 17, 2022 MemberMore actionswhen there's a trampoline frame in your overflow stack... 😔
Reacted by Daniel RosenwasserReacted by Gabriela Araujo BrittoDanielRosenwasser commented
on Mar 17, 2022 MemberMore actionsAww ):
Here's one to make you feel better (:
class MyThing { get myProp() { return Promise[this]; } }
<semantic> Response received: encodedSemanticClassifications-full (781). Request took 131 ms. Success: false . Message: Error processing request. Maximum call stack size exceeded RangeError: Maximum call stack size exceeded at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64162:21) at typeRelatedToSomeType ([node_modules_path]\typescript\lib\tsserver.js:64460:35) at unionOrIntersectionRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64406:28) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64771:34) at recursiveTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64688:30) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64200:25) at checkTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63815:26) at isTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63766:24) at isTypeAssignableTo ([node_modules_path]\typescript\lib\tsserver.js:62973:20) at checkIndexedAccessIndexType ([node_modules_path]\typescript\lib\tsserver.js:79768:17) at checkElementAccessExpression ([node_modules_path]\typescript\lib\tsserver.js:74312:20) at checkIndexedAccess ([node_modules_path]\typescript\lib\tsserver.js:74289:17) at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:78971:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16) at getReturnTypeFromBody ([node_modules_path]\typescript\lib\tsserver.js:76902:29) at resolveTypeOfAccessors ([node_modules_path]\typescript\lib\tsserver.js:55884:42) at getTypeOfAccessorsWorker ([node_modules_path]\typescript\lib\tsserver.js:55844:24) at getTypeOfSetAccessor ([node_modules_path]\typescript\lib\tsserver.js:55837:58) at getSetAccessorTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56062:28) at getWriteTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56058:20) at createUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58447:33) at getUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58499:28) at getPropertyOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:58508:28) at getPropertiesOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:57930:48) at getReducedType ([node_modules_path]\typescript\lib\tsserver.js:58525:34) at getNormalizedType ([node_modules_path]\typescript\lib\tsserver.js:63777:74) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64128:30) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64791:42) at recursiveTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64688:30) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64200:25) at checkTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63815:26) at isTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63766:24) at isTypeAssignableTo ([node_modules_path]\typescript\lib\tsserver.js:62973:20) at checkIndexedAccessIndexType ([node_modules_path]\typescript\lib\tsserver.js:79768:17) at checkElementAccessExpression ([node_modules_path]\typescript\lib\tsserver.js:74312:20) at checkIndexedAccess ([node_modules_path]\typescript\lib\tsserver.js:74289:17) at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:78971:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16) at getReturnTypeFromBody ([node_modules_path]\typescript\lib\tsserver.js:76902:29) at resolveTypeOfAccessors ([node_modules_path]\typescript\lib\tsserver.js:55884:42) at getTypeOfAccessorsWorker ([node_modules_path]\typescript\lib\tsserver.js:55844:24) at getTypeOfSetAccessor ([node_modules_path]\typescript\lib\tsserver.js:55837:58) at getSetAccessorTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56062:28) at getWriteTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56058:20) at createUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58447:33) at getUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58499:28) at getPropertyOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:58508:28) at getPropertiesOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:57930:48) at getReducedType ([node_modules_path]\typescript\lib\tsserver.js:58525:34) at getNormalizedType ([node_modules_path]\typescript\lib\tsserver.js:63777:74) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64128:30) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64791:42) at recursiveTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64688:30) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64200:25) at checkTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63815:26) at isTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:63766:24) at isTypeAssignableTo ([node_modules_path]\typescript\lib\tsserver.js:62973:20) at checkIndexedAccessIndexType ([node_modules_path]\typescript\lib\tsserver.js:79768:17) at checkElementAccessExpression ([node_modules_path]\typescript\lib\tsserver.js:74312:20) at checkIndexedAccess ([node_modules_path]\typescript\lib\tsserver.js:74289:17) at checkExpressionWorker ([node_modules_path]\typescript\lib\tsserver.js:78971:28) at checkExpression ([node_modules_path]\typescript\lib\tsserver.js:78882:38) at checkExpressionCached ([node_modules_path]\typescript\lib\tsserver.js:78546:38) at [node_modules_path]\typescript\lib\tsserver.js:77098:32 at traverse ([node_modules_path]\typescript\lib\tsserver.js:15409:28) at visitNodes ([node_modules_path]\typescript\lib\tsserver.js:30155:30) at Object.forEachChild ([node_modules_path]\typescript\lib\tsserver.js:30431:24) at traverse ([node_modules_path]\typescript\lib\tsserver.js:15425:31) at Object.forEachReturnStatement ([node_modules_path]\typescript\lib\tsserver.js:15405:16) at checkAndAggregateReturnExpressionTypes ([node_modules_path]\typescript\lib\tsserver.js:77095:16) at getReturnTypeFromBody ([node_modules_path]\typescript\lib\tsserver.js:76902:29) at resolveTypeOfAccessors ([node_modules_path]\typescript\lib\tsserver.js:55884:42) at getTypeOfAccessorsWorker ([node_modules_path]\typescript\lib\tsserver.js:55844:24) at getTypeOfSetAccessor ([node_modules_path]\typescript\lib\tsserver.js:55837:58) at getSetAccessorTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56062:28) at getWriteTypeOfSymbol ([node_modules_path]\typescript\lib\tsserver.js:56058:20) at createUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58447:33) at getUnionOrIntersectionProperty ([node_modules_path]\typescript\lib\tsserver.js:58499:28) at getPropertyOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:58508:28) at getPropertiesOfUnionOrIntersectionType ([node_modules_path]\typescript\lib\tsserver.js:57930:48) at getReducedType ([node_modules_path]\typescript\lib\tsserver.js:58525:34) at getNormalizedType ([node_modules_path]\typescript\lib\tsserver.js:63777:74) at isRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64128:30) at structuredTypeRelatedTo ([node_modules_path]\typescript\lib\tsserver.js:64791:42)gabritto commented
on Mar 30, 2022 MemberMore actionsGood news: it appears this bug has been fixed by #48459. This means it should be fixed in the current nightly, and from TS 4.7 onwards. Erik Krogh Kristensen (@erik-krogh) if you find the issue is still happening in those versions, please let us know and we can re-open the issue.
Reacted by Erik Krogh Kristensen- locked as resolved and limited conversation to collaborators
on Oct 22, 2025
Metadata
Metadata
Assignees
Labels
BugA bug in TypeScriptA bug in TypeScript
Stackoverflow when compiling a specific getter method
🔎 Search Terms
🕗 Version & Regression Information
The crash started happening with 4.6, and it still occurs on the latest nightly.
The crash doesn't happen on 4.5.5.
⏯ Playground Link
Reproduction playground: https://www.typescriptlang.org/dev/bug-workbench/?#code/MYGwhgzhAECyCeAVAFgSwHYHNoG8BQ00mApgC7QC28ACgE4D2ADgBQCUu0tZArretKTQwAZMOgAiAGb164gNzQAvnkVA
💻 Code
The crash only happens when
strictNullChecksis enabled.🙁 Actual behavior
Crash.
🙂 Expected behavior
No crash.