From 04447353bc504b9a5c02eb227b9ecd252e64ea20 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 29 Nov 2017 21:28:37 -0800 Subject: [PATCH] go/ssa: complete interface types for correct string form (fix build) Fixes golang/go#22933. Change-Id: I0cf0aab8b77114ee7eb1e181aee2c5b75087aa83 Reviewed-on: https://go-review.googlesource.com/80897 Run-TryBot: Robert Griesemer TryBot-Result: Gobot Gobot Reviewed-by: Alan Donovan --- go/internal/gccgoimporter/parser_test.go | 5 +++++ go/ssa/builder.go | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/go/internal/gccgoimporter/parser_test.go b/go/internal/gccgoimporter/parser_test.go index 427d943c..a6f5edab 100644 --- a/go/internal/gccgoimporter/parser_test.go +++ b/go/internal/gccgoimporter/parser_test.go @@ -47,6 +47,11 @@ func TestTypeParser(t *testing.T) { t.Errorf("expected full parse, stopped at %q", p.lit) } + // interfaces must be explicitly completed + if ityp, _ := typ.(*types.Interface); ityp != nil { + ityp.Complete() + } + got := typ.String() if got != test.want { t.Errorf("got type %q, expected %q", got, test.want) diff --git a/go/ssa/builder.go b/go/ssa/builder.go index 9390c398..44abc5b2 100644 --- a/go/ssa/builder.go +++ b/go/ssa/builder.go @@ -58,7 +58,7 @@ var ( tString = types.Typ[types.String] tUntypedNil = types.Typ[types.UntypedNil] tRangeIter = &opaqueType{nil, "iter"} // the type of all "range" iterators - tEface = new(types.Interface) + tEface = types.NewInterface(nil, nil).Complete() // SSA Value constants. vZero = intConst(0)