aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/noder/reader.go
diff options
context:
space:
mode:
authorCuong Manh Le <cuong.manhle.vn@gmail.com>2021-06-16 10:29:21 +0700
committerCuong Manh Le <cuong.manhle.vn@gmail.com>2021-06-16 06:10:32 +0000
commitee0420d3b56982cb1600dc141dfd4be155adddfe (patch)
treec550e420440b13a2d3358b4573a54a508d98162f /src/cmd/compile/internal/noder/reader.go
parentcf1ae5fc364eb7f2ee5203e4c5e30411c3cfe01f (diff)
downloadgo-ee0420d3b56982cb1600dc141dfd4be155adddfe.tar.gz
go-ee0420d3b56982cb1600dc141dfd4be155adddfe.zip
[dev.typeparams] cmd/compile: factor out implicit/explicit handling
The logic for handling them must keep in sync between reader/writer, so factoring them out from addBody make it's easier to refer later. Change-Id: I26447065867d79f4f47cc678a398b9e7bf5d2403 Reviewed-on: https://go-review.googlesource.com/c/go/+/328051 Trust: Cuong Manh Le <cuong.manhle.vn@gmail.com> Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com> TryBot-Result: Go Bot <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.go15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/cmd/compile/internal/noder/reader.go b/src/cmd/compile/internal/noder/reader.go
index 18ecbff3cc..803acaa88d 100644
--- a/src/cmd/compile/internal/noder/reader.go
+++ b/src/cmd/compile/internal/noder/reader.go
@@ -789,18 +789,25 @@ var bodyReader = map[*ir.Func]pkgReaderIndex{}
// constructed.
var todoBodies []*ir.Func
-func (r *reader) addBody(fn *ir.Func) {
- r.sync(syncAddBody)
+// Keep in sync with writer.implicitTypes
+// Also see comment there for why r.implicits and r.explicits should
+// never both be non-empty.
+func (r *reader) implicitTypes() []*types.Type {
+ r.sync(syncImplicitTypes)
- // See commont in writer.addBody for why r.implicits and r.explicits
- // should never both be non-empty.
implicits := r.implicits
if len(implicits) == 0 {
implicits = r.explicits
} else {
assert(len(r.explicits) == 0)
}
+ return implicits
+}
+
+func (r *reader) addBody(fn *ir.Func) {
+ r.sync(syncAddBody)
+ implicits := r.implicitTypes()
pri := pkgReaderIndex{r.p, r.reloc(relocBody), implicits}
bodyReader[fn] = pri