Skip to content

Nil dereference when printing back function that has mapped type with no mapped property type #64111

Description

declare function uhoh/**/<T>(x: { [K in keyof T] }): void;

Hover at /**/

[error] panic handling request textDocument/hover: runtime error: invalid memory address or nil pointer dereference
goroutine 5383 [running]:
runtime/debug.Stack()
	runtime/debug/stack.go:26 +0x64
github.com/microsoft/typescript-go/internal/lsp.(*Server).recover()
	github.com/microsoft/typescript-go/internal/lsp/server.go:998 +0x3c
panic()
	runtime/panic.go:860 +0x12c
github.com/microsoft/typescript-go/internal/ast.GetTypeNodePrecedence()
	github.com/microsoft/typescript-go/internal/ast/precedence.go:656 +0x18
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNode()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2281 +0x44
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodePreservingExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2271
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodeOutsideExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2265
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitMappedType()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2171 +0x30c
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNode()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2341 +0x59c
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodePreservingExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2271
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodeOutsideExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2265
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeAnnotation()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1516 +0x84
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitPropertySignature()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1647 +0x78
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeElement()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1811 +0x54
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4956 +0x4d4
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4755 +0x310
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitList()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4700 +0x94
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeLiteral()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1970 +0x194
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNode()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2315 +0x2b8
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitUnionTypeConstituent()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2039 +0x20
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4956 +0x4d4
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4755 +0x310
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitList()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4700 +0x94
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitUnionType()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2044 +0x4c
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNode()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2325 +0x3e0
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodePreservingExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2271
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeNodeOutsideExtends()
	github.com/microsoft/typescript-go/internal/printer/printer.go:2265
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitTypeAnnotation()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1516 +0x84
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameter()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1472 +0xb0
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameterDeclarationNode()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1481 +0x30
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListItems()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4956 +0x4d4
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitListRange()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4755 +0x310
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitList()
	github.com/microsoft/typescript-go/internal/printer/printer.go:4700 +0x94
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitParameters()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1532 +0x58
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitSignature()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1581 +0x58
github.com/microsoft/typescript-go/internal/printer.(*Printer).emitCallSignature()
	github.com/microsoft/typescript-go/internal/printer/printer.go:1746 +0x154
github.com/microsoft/typescript-go/internal/printer.(*Printer).Write()
	github.com/microsoft/typescript-go/internal/printer/printer.go:5120 +0x508
github.com/microsoft/typescript-go/internal/checker.(*Checker).signatureToStringEx()
	github.com/microsoft/typescript-go/internal/checker/printer.go:350 +0x370
github.com/microsoft/typescript-go/internal/checker.(*Checker).SignatureToStringEx()
	github.com/microsoft/typescript-go/internal/checker/printer.go:314
github.com/microsoft/typescript-go/internal/ls.getQuickInfoAndDeclarationAtLocation.func2()
	github.com/microsoft/typescript-go/internal/ls/hover.go:319 +0x470
github.com/microsoft/typescript-go/internal/ls.getQuickInfoAndDeclarationAtLocation.func10()
	github.com/microsoft/typescript-go/internal/ls/hover.go:737 +0x41b4
github.com/microsoft/typescript-go/internal/ls.getQuickInfoAndDeclarationAtLocation()
	github.com/microsoft/typescript-go/internal/ls/hover.go:772 +0x6c8
github.com/microsoft/typescript-go/internal/ls.(*LanguageService).getQuickInfoAndDocumentationForSymbol()
	github.com/microsoft/typescript-go/internal/ls/hover.go:89 +0x58
github.com/microsoft/typescript-go/internal/ls.(*LanguageService).ProvideHover()
	github.com/microsoft/typescript-go/internal/ls/hover.go:58 +0x260
github.com/microsoft/typescript-go/internal/lsp.(*Server).handleHover()
	github.com/microsoft/typescript-go/internal/lsp/server.go:1370 +0x2c
github.com/microsoft/typescript-go/internal/lsp.init.func1.registerLanguageServiceDocumentRequestHandler[...].15.1()
	github.com/microsoft/typescript-go/internal/lsp/server.go:871 +0x78
github.com/microsoft/typescript-go/internal/lsp.(*Server).handleRequestOrNotification.func1()
	github.com/microsoft/typescript-go/internal/lsp/server.go:719 +0x50
github.com/microsoft/typescript-go/internal/lsp.(*Server).dispatchLoop.func3()
	github.com/microsoft/typescript-go/internal/lsp/server.go:582 +0x34
created by github.com/microsoft/typescript-go/internal/lsp.(*Server).dispatchLoop in goroutine 8
	github.com/microsoft/typescript-go/internal/lsp/server.go:581 +0x41c

Metadata

Metadata

Labels

BugA bug in TypeScriptCrashFor flagging bugs which are compiler or service crashes or unclean exits, rather than bad outputDomain: LS: Type DisplayBugs relating to showing types in Quick Info/Tooltips, Signature Help, or Completion Info

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions