When exporting the "any" empty interface type for unified IR, write it
out as a reference to the "any" alias, rather than to the underlying
empty interface. This matches how "byte" and "rune" are handled.
Verified to fix the issue demonstrated in CL 369975.
Change-Id: Ic2844b0acc3b17c20b3a40aaf262f62ec653eb5a
Reviewed-on: https://go-review.googlesource.com/c/go/+/370374
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
// @@@ Types
+var anyTypeName = types2.Universe.Lookup("any").(*types2.TypeName)
+
func (w *writer) typ(typ types2.Type) {
w.typInfo(w.p.typIdx(typ, w.dict))
}
w.structType(typ)
case *types2.Interface:
+ if typ == anyTypeName.Type() {
+ w.code(typeNamed)
+ w.obj(anyTypeName, nil)
+ break
+ }
+
w.code(typeInterface)
w.interfaceType(typ)