From: Robert Griesemer Date: Mon, 8 May 2023 20:01:21 +0000 (-0700) Subject: go/types, types2: remove genericMultiExpr (inline it in genericExprList) X-Git-Tag: go1.21rc1~641 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=0a9875c5c809fa70ae6662b8a38f5f86f648badd;p=gostls13.git go/types, types2: remove genericMultiExpr (inline it in genericExprList) Also, remove named return values for exprList, genericExprList. Change-Id: I099abff4572530dd0c3b39c92d6b9a4662d95c2d Reviewed-on: https://go-review.googlesource.com/c/go/+/493557 Reviewed-by: Robert Griesemer Reviewed-by: Robert Findley Run-TryBot: Robert Griesemer Auto-Submit: Robert Griesemer TryBot-Result: Gopher Robot --- diff --git a/src/cmd/compile/internal/types2/call.go b/src/cmd/compile/internal/types2/call.go index ac5efad93d..23738e2aac 100644 --- a/src/cmd/compile/internal/types2/call.go +++ b/src/cmd/compile/internal/types2/call.go @@ -343,41 +343,61 @@ func (check *Checker) callExpr(x *operand, call *syntax.CallExpr) exprKind { // exprList evaluates a list of expressions and returns the corresponding operands. // A single-element expression list may evaluate to multiple operands. -func (check *Checker) exprList(elist []syntax.Expr) (xlist []*operand) { +func (check *Checker) exprList(elist []syntax.Expr) []*operand { switch len(elist) { case 0: - // nothing to do + return nil + case 1: - xlist, _ = check.multiExpr(elist[0], false) + xlist, _ := check.multiExpr(elist[0], false) + return xlist + default: // multiple (possibly invalid) values - xlist = make([]*operand, len(elist)) + xlist := make([]*operand, len(elist)) for i, e := range elist { var x operand check.expr(nil, &x, e) xlist[i] = &x } + return xlist } - return } // genericExprList is like exprList but result operands may be generic (not fully instantiated). -func (check *Checker) genericExprList(elist []syntax.Expr) (xlist []*operand) { +func (check *Checker) genericExprList(elist []syntax.Expr) []*operand { switch len(elist) { case 0: - // nothing to do + return nil + case 1: - xlist = check.genericMultiExpr(elist[0]) + e := elist[0] + var x operand + check.rawExpr(nil, &x, e, nil, true) + check.exclude(&x, 1<