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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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