aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder/reader.go
diff options
context:
space:
mode:
authorCuong Manh Le <cuong.manhle.vn@gmail.com>2022-04-04 14:07:36 +0700
committerCuong Manh Le <cuong.manhle.vn@gmail.com>2022-04-04 16:25:52 +0000
commitefbe17d6f1f016616453d43208200ebf4a45d87c (patch)
tree4ac30c27e33db4e07cabcbf2b221edd5f440d1a4 /src/cmd/compile/internal/noder/reader.go
parentc8110c3df64a4eea12334a627cca2b78d6ff3082 (diff)
downloadgo-efbe17d6f1f016616453d43208200ebf4a45d87c.tar.xz
cmd/compile: support reading union type for compiler backend in unified IR
Fixes #52124 Change-Id: I5749822d41d8e51f476bceb277b1d2cf7350dcc3 Reviewed-on: https://go-review.googlesource.com/c/go/+/397874 Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/noder/reader.go')
-rw-r--r--src/cmd/compile/internal/noder/reader.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go
index 01e795183d..71efac80aa 100644
--- a/src/cmd/compile/internal/noder/reader.go
+++ b/src/cmd/compile/internal/noder/reader.go
@@ -442,9 +442,21 @@ func (r *reader) doTyp() *types.Type {
return r.structType()
case pkgbits.TypeInterface:
return r.interfaceType()
+ case pkgbits.TypeUnion:
+ return r.unionType()
}
}
+func (r *reader) unionType() *types.Type {
+ terms := make([]*types.Type, r.Len())
+ tildes := make([]bool, len(terms))
+ for i := range terms {
+ tildes[i] = r.Bool()
+ terms[i] = r.typ()
+ }
+ return types.NewUnion(terms, tildes)
+}
+
func (r *reader) interfaceType() *types.Type {
tpkg := types.LocalPkg // TODO(mdempsky): Remove after iexport is gone.