Skip to content

Crash in VSCode: Unhandled case in Node.ElementList: KindTupleType #2039

@jthemphill

Description

@jthemphill

Stack trace

[Error - 7:18:48 PM] Request textDocument/inlayHint failed.
  Message: InternalError: panic handling request textDocument/inlayHint: Unhandled case in Node.ElementList: KindTupleType
  Code: -32603 
panic handling request textDocument/inlayHint Unhandled case in Node.ElementList: KindTupleType goroutine 278400 [running]:
runtime/debug.Stack()
	runtime/debug/stack.go:26 +0x64
github.com/microsoft/typescript-go/internal/lsp.(*Server).recover(0x14000000f00, 0x140f4912d20)
	github.com/microsoft/typescript-go/internal/lsp/server.go:571 +0x44
panic({0x10528cb00?, 0x1407513e710?})
	runtime/panic.go:783 +0x120
github.com/microsoft/typescript-go/internal/ast.(*Node).ElementList(0x0?)
	github.com/microsoft/typescript-go/internal/ast/ast.go:1073 +0xf8
github.com/microsoft/typescript-go/internal/ast.(*Node).Elements(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:1077
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).getInlayHintLabelParts.func1(0x14046d7a040)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:524 +0x4524
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).getInlayHintLabelParts(0x14003c489e8?, 0x1408f0b0380?)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:745 +0x90
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).typeToInlayHintParts(0x140bfb36000, 0x104fdd56c?)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:313 +0x50
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).getParameterDeclarationTypeHints(0x140bfb36000, 0x1052ffba0?)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:304 +0x84
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).addParameterTypeHint(0x140bfb36000, 0x14089784f50, 0x1408ea4b260)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:280 +0x50
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visitFunctionLikeForParameterType(0x140bfb36000, 0x140bf3e41e0)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:266 +0xd8
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x140bf3e41e0)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:94 +0x2e8
github.com/microsoft/typescript-go/internal/ast.visitNodes(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:28
github.com/microsoft/typescript-go/internal/ast.visitNodeList(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:37
github.com/microsoft/typescript-go/internal/ast.(*CallExpression).ForEachChild(0x140bd532c60, 0x1407513e500)
	github.com/microsoft/typescript-go/internal/ast/ast.go:6849 +0x114
github.com/microsoft/typescript-go/internal/ast.(*Node).ForEachChild(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:242
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x140bd532c60)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:101 +0x390
github.com/microsoft/typescript-go/internal/ast.visit(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:21
github.com/microsoft/typescript-go/internal/ast.(*ExpressionStatement).ForEachChild(0x14000091808?, 0x1407513e4e0?)
	github.com/microsoft/typescript-go/internal/ast/ast.go:3637 +0x34
github.com/microsoft/typescript-go/internal/ast.(*Node).ForEachChild(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:242
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x14181e50d80)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:101 +0x390
github.com/microsoft/typescript-go/internal/ast.visitNodes(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:28
github.com/microsoft/typescript-go/internal/ast.visitNodeList(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:37
github.com/microsoft/typescript-go/internal/ast.(*Block).ForEachChild(0x14089784ee0?, 0x1407513e4e0)
	github.com/microsoft/typescript-go/internal/ast/ast.go:3681 +0x74
github.com/microsoft/typescript-go/internal/ast.(*Node).ForEachChild(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:242
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x14172841e60)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:101 +0x390
github.com/microsoft/typescript-go/internal/ast.visit(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:21
github.com/microsoft/typescript-go/internal/ast.(*FunctionDeclaration).ForEachChild(0x141af1eda20, 0x1407513e4a0)
	github.com/microsoft/typescript-go/internal/ast/ast.go:4106 +0x1a0
github.com/microsoft/typescript-go/internal/ast.(*Node).ForEachChild(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:242
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x141af1eda20)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:101 +0x390
github.com/microsoft/typescript-go/internal/ast.visitNodes(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:28
github.com/microsoft/typescript-go/internal/ast.visitNodeList(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:37
github.com/microsoft/typescript-go/internal/ast.(*SourceFile).ForEachChild(0x1409a93d508, 0x1407513e440)
	github.com/microsoft/typescript-go/internal/ast/ast.go:10862 +0xa4
github.com/microsoft/typescript-go/internal/ast.(*Node).ForEachChild(...)
	github.com/microsoft/typescript-go/internal/ast/ast.go:242
github.com/microsoft/typescript-go/internal/ls.(*inlayHintState).visit(0x140bfb36000, 0x1409a93d508)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:101 +0x390
github.com/microsoft/typescript-go/internal/ls.(*LanguageService).ProvideInlayHint(0x14145296120, {0x1054af0c0, 0x140be06a050}, 0x140f4912cf0)
	github.com/microsoft/typescript-go/internal/ls/inlay_hints.go:45 +0x1cc
github.com/microsoft/typescript-go/internal/lsp.(*Server).handleInlayHint(0x1400022ca20?, {0x1054af0c0?, 0x140be06a050?}, 0x14137906310?, 0x6a?)
	github.com/microsoft/typescript-go/internal/lsp/server.go:986 +0x2c
github.com/microsoft/typescript-go/internal/lsp.init.func1.registerLanguageServiceDocumentRequestHandler[...].27({0x1054af0c0, 0x140be06a050}, 0x140f4912d20)
	github.com/microsoft/typescript-go/internal/lsp/server.go:557 +0xe0
github.com/microsoft/typescript-go/internal/lsp.(*Server).handleRequestOrNotification(0x14000000f00, {0x1054af0c0, 0x140be06a050}, 0x140f4912d20)
	github.com/microsoft/typescript-go/internal/lsp/server.go:451 +0xf4
github.com/microsoft/typescript-go/internal/lsp.(*Server).dispatchLoop.func1()
	github.com/microsoft/typescript-go/internal/lsp/server.go:356 +0x34
created by github.com/microsoft/typescript-go/internal/lsp.(*Server).dispatchLoop in goroutine 33
	github.com/microsoft/typescript-go/internal/lsp/server.go:376 +0x79c

Steps to reproduce

  1. Install TypeScript (Native Preview) extension version 20251107.1
  2. Set "typescript.experimental.useTsgo": true in your VSCode settings
  3. Set "typescript.inlayHints.parameterTypes.enabled": true in your VSCode settings
  4. Load this file in the VSCode editor:
function iterateTuples(tuples: [string][]): void {
  tuples.forEach((l) => {})
}

You could also reproduce by opening https://github.com/jthemphill/tsgo-tuple-inlay-hint-crash-repro with a fresh VSCode profile.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions