Closed
Description
🔎 Search Terms
infinite loop, circular, infinite loop, getExportInfos, invalid array length
🕗 Version & Regression Information
- This is an infinite loop in tsserver, eventually leading to a crash due to creating an infinitely sized array.
- This changed between versions 5.5.0-dev.20240508 and 5.5.0-dev.20240509
- Probably this pr: Refactor default export info name gathering #58460
⏯ Playground Link
Does not reproduce on playground
💻 Code
In an empty folder, place this code in types.d.ts
declare module "mymod" {
import mymod from "mymod";
export default mymod;
}
In another file index.ts
, trigger an autocomplete or getCodeFixes. Typing two characters into an empty file will usually work. It will hang.
🙁 Actual behavior
The LSP server go into an infinite loop and hangs. After about 20 seconds it'll throw because an array gets too big.
The server log contains:
RangeError: Invalid array length
at Array.push (<anonymous>)
at append (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:2822:6)
at forEachNameOfDefaultExport (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:138888:13)
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:155493:115
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:138720:119
at forEachExternalModule (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:138763:7)
at forEachExternalModuleToImportFrom (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:138720:3)
at getExportInfos (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:155488:3)
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:155424:24
at flatMap (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:2502:17)
at getFixesInfoForNonUMDImport (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:155418:10)
at getFixInfos (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:155254:12)
at Object.getCodeActions (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:154389:18)
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:151448:46
at flatMap (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:2502:17)
at Object.getFixes (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:151448:10)
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:149730:33
at flatMap (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:2502:17)
at Object.getCodeFixesAtPosition (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:149728:12)
at IpcIOSession.getCodeFixes (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:191339:50)
at getCodeFixes (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:189374:43)
at /Users/myusername/mweb/node_modules/typescript/lib/typescript.js:191661:15
at IpcIOSession.executeWithRequestId (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:191650:14)
at IpcIOSession.executeCommand (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:191659:29)
at IpcIOSession.onMessage (/Users/myusername/mweb/node_modules/typescript/lib/typescript.js:191707:68)
at process.<anonymous> (/Users/myusername/mweb/node_modules/typescript/lib/tsserver.js:525:14)
at process.emit (node:events:514:28)
at emit (node:internal/child_process:951:14)
at process.processTicksAndRejections (node:internal/process/task_queues:83:21)

🙂 Expected behavior
Nothing should happen.
Additional information about the issue
No response