From 6f233b96dfbc53e33b302e31b88814cf74697ff6 Mon Sep 17 00:00:00 2001 From: Alan Donovan Date: Tue, 1 Mar 2016 13:25:48 -0500 Subject: [PATCH] cmd/guru: fix nil dereference in describe + test Fixes issue golang/go#14579 Change-Id: I6fd56f10c170027f06917935ccbc28490d413d8a Reviewed-on: https://go-review.googlesource.com/20100 Reviewed-by: Michael Matloob --- cmd/guru/describe.go | 3 +++ cmd/guru/testdata/src/describe/main.go | 2 ++ cmd/guru/testdata/src/describe/main.golden | 3 +++ 3 files changed, 8 insertions(+) diff --git a/cmd/guru/describe.go b/cmd/guru/describe.go index f903f166..caf46164 100644 --- a/cmd/guru/describe.go +++ b/cmd/guru/describe.go @@ -324,6 +324,9 @@ func describeValue(qpos *queryPos, path []ast.Node) (*describeValueResult, error } t := qpos.info.TypeOf(expr) + if t == nil { + t = types.Typ[types.Invalid] + } constVal := qpos.info.Types[expr].Value return &describeValueResult{ diff --git a/cmd/guru/testdata/src/describe/main.go b/cmd/guru/testdata/src/describe/main.go index 4677d80b..d519db17 100644 --- a/cmd/guru/testdata/src/describe/main.go +++ b/cmd/guru/testdata/src/describe/main.go @@ -86,6 +86,8 @@ func main() { // @describe func-def-main "main" var _ int // @describe var-def-blank "_" var _ lib.Outer // @describe lib-outer "Outer" + + unknown() // @describe call-unknown "\\(" } type I interface { // @describe def-iface-I "I" diff --git a/cmd/guru/testdata/src/describe/main.golden b/cmd/guru/testdata/src/describe/main.golden index 925c980e..f7ffdcbb 100644 --- a/cmd/guru/testdata/src/describe/main.golden +++ b/cmd/guru/testdata/src/describe/main.golden @@ -197,6 +197,9 @@ Fields: inner.C bool inner.recursive.E bool +-------- @describe call-unknown -------- +function call (or conversion) of type invalid type + -------- @describe def-iface-I -------- definition of type I (size 16, align 8) Method set: