mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
The following code:
func n() {(interface{int})}
generates:
3: interface contains embedded non-interface int
3: type %!v(PANIC=runtime error: invalid memory address or nil pointer dereference) is not an expression
It is because the corresponding symbol (Sym field in Type object)
is nil, resulting in a panic in typefmt.
Just skip the symbol if it is nil, so that the error message becomes:
3: interface contains embedded non-interface int
3: type interface { int } is not an expression
Fixes #11614
Change-Id: I219ae7eb01edca264fad1d4a1bd261d026294b00
Reviewed-on: https://go-review.googlesource.com/14015
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
26 lines
619 B
Go
26 lines
619 B
Go
// errorcheck
|
|
|
|
// Copyright 2015 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.
|
|
|
|
// Test that incorrect expressions involving wrong anonymous interface
|
|
// do not generate panics in Type Stringer.
|
|
// Does not compile.
|
|
|
|
package main
|
|
|
|
type I interface {
|
|
int // ERROR "interface contains embedded non-interface int"
|
|
}
|
|
|
|
func n() {
|
|
(I) // ERROR "type I is not an expression"
|
|
}
|
|
|
|
func m() {
|
|
(interface{int}) // ERROR "interface contains embedded non-interface int" "type interface { int } is not an expression"
|
|
}
|
|
|
|
func main() {
|
|
}
|