From 4045b1bc3f97a47274ef1da2bf6d29f5ce1c7b88 Mon Sep 17 00:00:00 2001 From: Wayne Zuo Date: Thu, 16 Jun 2022 11:05:39 +0800 Subject: 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 Reviewed-by: Cuong Manh Le TryBot-Result: Gopher Robot Reviewed-by: Alex Rakoczy Auto-Submit: Alex Rakoczy Reviewed-by: Keith Randall Run-TryBot: Wayne Zuo --- src/cmd/compile/internal/noder/stencil.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/cmd') 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. -- cgit v1.3-5-g9baa