From ccdef3cc2699ea2a30a2931a43a1774bd974000a Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Thu, 2 May 2024 14:53:28 -0400 Subject: [PATCH] gopls/internal/golang: fix nil panic in InlayHint Fixes golang/go#67142 Change-Id: Iee99c1fb0378c409bbbe803ad66b99a068e6d4bc Reviewed-on: https://go-review.googlesource.com/c/tools/+/582957 Reviewed-by: Robert Findley LUCI-TryBot-Result: Go LUCI Auto-Submit: Alan Donovan --- gopls/internal/golang/inlay_hint.go | 6 +++- .../marker/testdata/inlayhints/issue67142.txt | 36 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 gopls/internal/test/marker/testdata/inlayhints/issue67142.txt diff --git a/gopls/internal/golang/inlay_hint.go b/gopls/internal/golang/inlay_hint.go index 245a9822b08..60830c51997 100644 --- a/gopls/internal/golang/inlay_hint.go +++ b/gopls/internal/golang/inlay_hint.go @@ -139,7 +139,11 @@ func parameterNames(node ast.Node, m *protocol.Mapper, tf *token.File, info *typ if !ok { return nil } - signature, ok := typeparams.CoreType(info.TypeOf(callExpr.Fun)).(*types.Signature) + t := info.TypeOf(callExpr.Fun) + if t == nil { + return nil + } + signature, ok := typeparams.CoreType(t).(*types.Signature) if !ok { return nil } diff --git a/gopls/internal/test/marker/testdata/inlayhints/issue67142.txt b/gopls/internal/test/marker/testdata/inlayhints/issue67142.txt new file mode 100644 index 00000000000..18e98e81acb --- /dev/null +++ b/gopls/internal/test/marker/testdata/inlayhints/issue67142.txt @@ -0,0 +1,36 @@ +Regression test for golang/go#67142. + +-- flags -- +-ignore_extra_diags +-min_go=go1.21 + +-- settings.json -- +{ + "hints": { + "assignVariableTypes": true, + "compositeLiteralFields": true, + "compositeLiteralTypes": true, + "constantValues": true, + "functionTypeParameters": true, + "parameterNames": true, + "rangeVariabletypes": true + } +} + +-- go.mod -- +module w + +go 1.21.9 + +-- p.go -- +//@inlayhints(out) +package p + +var _ = rand.Float64() + +-- @out -- +//@inlayhints(out) +package p + +var _ = rand.Float64() +