microsoft / microsoft/TypeScript
Compiler crash: Debug Failure in visitEachChildOfIndexSignatureDeclaration
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 111k
- Forks
- 14.3k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 132
Description
### 🔎 Search Terms
typescript debug failure index signature
visitEachChildOfIndexSignatureDeclaration
typescript compiler crash decorator addInitializer
invalid index signature decorator
typescript Debug Failure index signature
### 🕗 Version & Regression Information
- This is the behavior in the version I tested (TypeScript 5.9.3). I reviewed the FAQ and did not find entries related to this compiler crash.
### ⏯ Playground Link
https://www.typescriptlang.org/play/?#code/FAMwrgdgxgLglgewgAgIYGd1wgcwCoCeADgKYAUIEAXMgGKSyIQA0yA+rAB40DCANhnQBZEjAAWCACYARElAQAnVDEU8kMEpxgBKAN7BkyA8j6jklAHKoAtiWQBedlwB0EGyWDGOMTs9STJAEkIOHhUPjgALxIFCgZ4JDJxOHQaXQBtAGsSAhp0GAVsHABdVlQIAgBfbWR9Q3rkZPR0y3dnFQBlAqKybWKHcwhnACNsSSSxFO0AbmNq42MFUTAFFHBoBJQAdyUiUgVkCZSacoJmZwvUBRxUtArkGpoANwQ4STr6+Qh0BFNnPgQODIAAMoAJMMhbOIpJD3MgACS6Vq2doILqFXC9SrA7TGQyUZxQcJ8I7oVgXPzXdC4wyVTyVIzAMGCZAACRIfABtWMX3yCjAsEUvX0cwWhgAAoIioRSMZJGiEFCiodtM9Xu88cheb8SP9AWQAERiDkAg005B0ypAA
### 💻 Code
```typescript
function assingType(fn: Function, _ctx: ClassMethodDecoratorContext){
let fnName = _ctx.name
_ctx.addInitializer(function(this: {[key: string], any}) { // here is my sintaxis error
// Invalid type annotation. The compiler should report a type error,
// but instead it crashes with "Debug Failure".
this[fnName.toString()] = fn.bind(this);
})
return function wrapper (this: any,...args: any ) : void{
console.log(`class method mame ${fnName.toString()}`)
fn.call(this, ...args)
}
}
class Hello {
constructor(){
}
@assingType
doSometing (): void{
console.log("hello")
}
}
```
### 🙁 Actual behavior
C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:123168
throw e;
^
Error: Debug Failure.
at visitEachChildOfIndexSignatureDeclaration (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90865:13)
at visitEachChild (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90721:33)
at visitEachChild2 (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:133010:16)
at visitExistingNodeTreeSymbolsWorker (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:132899:23)
at visitExistingNodeTreeSymbols (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:132658:22)
at visitArrayWorker (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90535:49)
at visitNodes2 (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90506:19)
at visitEachChildOfTypeLiteralNode (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90911:7)
at visitEachChild (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:90721:33)
at visitEachChild2 (C:\Users\diazc\AppData\Roaming\npm\node_modules\typescript\lib\_tsc.js:133010:16)
### 🙂 Expected behavior
The TypeScript compiler should not crash.
If the code is invalid, the compiler should emit a normal type error instead of throwing a "Debug Failure" during compilation.
### Additional information about the issue
This code does not crash in the TypeScript Playground. The Playground only reports normal type-checking errors.
However, when compiling locally with `tsc` (TypeScript 5.9.3), the compiler crashes with a "Debug Failure" during compilation.
A screenshot of the stack trace from the local `tsc` execution is attached.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the provided TypeScript code and reproduce the crash locally with tsc 5.9.3, then compare it with the Playground result. Trace the stack from visitEachChildOfIndexSignatureDeclaration and use the invalid index signature annotation as the focused case. Done means the compiler reports a normal type error instead of throwing Debug Failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 48/100