From 96a96a9058004af531db56dee26d82af08321cdb Mon Sep 17 00:00:00 2001 From: Dan Scales Date: Thu, 4 Mar 2021 12:09:04 -0800 Subject: cmd/compile: remove types2.(*Selection).TArgs(), now that instance bug seems fixed Previously, we would sometimes see an internal (*instance) type for a receiver of a types2 method, which was a bug. To deal with that, we put in an extra (*Selection).TArgs() method. However, that (*instance) type is no longer showing up for receivers, so we can remove the types2 method we added and do the work with existing types2 API methods. Change-Id: I03e68f5bbaaf82fe706b6efecbb02e951bbd3cd4 Reviewed-on: https://go-review.googlesource.com/c/go/+/298869 Run-TryBot: Dan Scales TryBot-Result: Go Bot Reviewed-by: Robert Griesemer Trust: Dan Scales --- src/cmd/compile/internal/noder/expr.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/cmd/compile/internal/noder/expr.go') diff --git a/src/cmd/compile/internal/noder/expr.go b/src/cmd/compile/internal/noder/expr.go index 3fded144dc..b99f5a4cdd 100644 --- a/src/cmd/compile/internal/noder/expr.go +++ b/src/cmd/compile/internal/noder/expr.go @@ -253,7 +253,7 @@ func (g *irgen) selectorExpr(pos src.XPos, typ types2.Type, expr *syntax.Selecto // selinfo.Targs() are the types used to // instantiate the type of receiver - targs2 := selinfo.TArgs() + targs2 := getTargs(selinfo) targs := make([]ir.Node, len(targs2)) for i, targ2 := range targs2 { targs[i] = ir.TypeNode(g.typ(targ2)) @@ -279,6 +279,19 @@ func (g *irgen) selectorExpr(pos src.XPos, typ types2.Type, expr *syntax.Selecto return n } +// getTargs gets the targs associated with the receiver of a selected method +func getTargs(selinfo *types2.Selection) []types2.Type { + r := selinfo.Recv() + if p := types2.AsPointer(r); p != nil { + r = p.Elem() + } + n := types2.AsNamed(r) + if n == nil { + base.Fatalf("Incorrect type for selinfo %v", selinfo) + } + return n.TArgs() +} + func (g *irgen) exprList(expr syntax.Expr) []ir.Node { switch expr := expr.(type) { case nil: -- cgit v1.3-5-g9baa