Skip to content

Crash: Stack overflow when checking identifier in binding pattern with strict mode enabled #63044

@na7ure-a

Description

@na7ure-a

🔎 Search Terms

RangeError: Maximum call stack size exceeded

isDeprecatedSymbol

getTypeOfInitializer

checkIdentifierCalculateNodeCheckFlags

strict mode crash

🕗 Version & Regression Information

Versions: Reproducible in 5.7.3, 5.8.3, 5.9.3, and Nightly.

Conditions: Only crashes when --strict

⏯ Playground Link

https://www.typescriptlang.org/zh/play/?target=7&ts=6.0.0-dev.20260124#code/GYVwdgxgLglg9mABMAFASgFAdJWDkoDawMATgM5QA0i4AJgKYlgN0C6A-AFyIoQIkA5lwCGYAJ5pEAXgB8iMeMQzaYRs1aI0PRQG8AvkA

💻 Code

function f()

function f([first, undefined]?: (config:any) => any  = undefined ): any{}

🙁 Actual behavior

PS D:\do\typeFuzz>  .\ts-versions\nightly\node_modules\.bin\tsc.cmd    --strict  .\mutated\callbackCrossModule_enriched_deep_mutated_batch6.ts
D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:123181
      throw e;
      ^

RangeError: Maximum call stack size exceeded
    at getCombinedNodeFlagsCached (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:90369:38)                                                                                      
    at isDeprecatedDeclaration (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:47545:15)                                                                                         
    at every (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:83:12)                                                                                                              
    at isDeprecatedSymbol (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:47542:124)                                                                                             
    at checkIdentifierCalculateNodeCheckFlags (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:71936:9)                                                                           
    at checkIdentifier (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:71975:5)                                                                                                  
    at checkExpressionWorker (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80857:16)                                                                                           
    at checkExpression (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80800:32)                                                                                                 
    at getTypeOfExpression (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:80741:18)                                                                                             
    at getTypeOfInitializer (D:\do\typeFuzz\ts-versions\nightly\node_modules\typescript\lib\_tsc.js:69732:34)                                                                                            

Node.js v22.19.0

🙂 Expected behavior

The compiler should report a syntax error and not crash.

Additional information about the issue

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Fix AvailableA PR has been opened for this issue

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions