diff options
| author | Wayne Zuo <wdvxdr@golangcn.org> | 2022-06-16 11:05:39 +0800 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-06-22 16:25:18 +0000 |
| commit | 4045b1bc3f97a47274ef1da2bf6d29f5ce1c7b88 (patch) | |
| tree | b39c527aae3a431e2c6497adbede0b77a427b57a /src/cmd/compile/internal/noder | |
| parent | 6bad7e82430bb1eb927a2901f44f9664637db27d (diff) | |
| download | go-4045b1bc3f97a47274ef1da2bf6d29f5ce1c7b88.tar.xz | |
cmd/compile: fix assert condition in generic method call
Fixes #53406.
Change-Id: If7ae39ec1042a792d82a0a2de96d168c22d8ab71
Reviewed-on: https://go-review.googlesource.com/c/go/+/412614
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Alex Rakoczy <alex@golang.org>
Auto-Submit: Alex Rakoczy <alex@golang.org>
Reviewed-by: Keith Randall <khr@golang.org>
Run-TryBot: Wayne Zuo <wdvxdr@golangcn.org>
Diffstat (limited to 'src/cmd/compile/internal/noder')
| -rw-r--r-- | src/cmd/compile/internal/noder/stencil.go | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/cmd/compile/internal/noder/stencil.go b/src/cmd/compile/internal/noder/stencil.go index eeb503811c..d463c850f3 100644 --- a/src/cmd/compile/internal/noder/stencil.go +++ b/src/cmd/compile/internal/noder/stencil.go @@ -208,9 +208,15 @@ func (g *genInst) scanForGenCalls(decl ir.Node) { st := g.getInstantiation(gf, targs, true).fun dictValue, usingSubdict := g.getDictOrSubdict(declInfo, n, gf, targs, true) - // We have to be using a subdictionary, since this is - // a generic method call. - assert(usingSubdict) + if hasShapeTypes(targs) { + // We have to be using a subdictionary, since this is + // a generic method call. + assert(usingSubdict) + } else { + // We should use main dictionary, because the receiver is + // an instantiation already, see issue #53406. + assert(!usingSubdict) + } // Transform to a function call, by appending the // dictionary and the receiver to the args. |
