Skip to content

Compiler crash: Debug Failure in visitEachChildOfIndexSignatureDeclaration #63230

@juanjh1

Description

@juanjh1

🔎 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

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.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions