diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/cmd/compile/internal/gc/fmt.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/gc/fmt.go b/src/cmd/compile/internal/gc/fmt.go index 2525921c8b..5f108724e0 100644 --- a/src/cmd/compile/internal/gc/fmt.go +++ b/src/cmd/compile/internal/gc/fmt.go @@ -579,9 +579,14 @@ func typefmt(t *Type, flag int) string { buf.WriteString("interface {") for t1 := t.Type; t1 != nil; t1 = t1.Down { buf.WriteString(" ") - if exportname(t1.Sym.Name) { + switch { + case t1.Sym == nil: + // Check first that a symbol is defined for this type. + // Wrong interface definitions may have types lacking a symbol. + break + case exportname(t1.Sym.Name): buf.WriteString(Sconv(t1.Sym, obj.FmtShort)) - } else { + default: buf.WriteString(Sconv(t1.Sym, obj.FmtUnsigned)) } buf.WriteString(Tconv(t1.Type, obj.FmtShort)) |
