Compile:
package p
var f = func(...A)
Before this CL:
x.go:3:13: type %!v(PANIC=runtime error: invalid memory address or nil pointer dereference) is not an expression
x.go:3:17: undefined: A
After this CL:
x.go:3:13: type func(...<T>) is not an expression
x.go:3:17: undefined: A
Found with go-fuzz.
Fixes #20233
Change-Id: Ibb232b3954c4091071440eba48b44c4022a8083f
Reviewed-on: https://go-review.googlesource.com/42610
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
var typ string
if f.Isddd() {
- typ = "..." + tmodeString(f.Type.Elem(), mode, depth)
+ var et *types.Type
+ if f.Type != nil {
+ et = f.Type.Elem()
+ }
+ typ = "..." + tmodeString(et, mode, depth)
} else {
typ = tmodeString(f.Type, mode, depth)
}
--- /dev/null
+// errorcheck
+
+// Copyright 2017 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Issue 20233: panic while formatting an error message
+
+package p
+
+var f = func(...A) // ERROR "type func(....*) is not an expression" ERROR "undefined: A"