mirror of https://github.com/golang/go.git
go/types, types2: simplify Checker.exprList
Change-Id: I7e9e5bef9364afc959c66d9765180c4ed967f517 Reviewed-on: https://go-review.googlesource.com/c/go/+/478755 Run-TryBot: Robert Griesemer <gri@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@google.com> Auto-Submit: Robert Griesemer <gri@google.com> Reviewed-by: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
a933d06271
commit
1742691270
|
|
@ -361,7 +361,7 @@ func (check *Checker) initVars(lhs []*Var, orig_rhs []syntax.Expr, returnStmt sy
|
||||||
// resulting in 2 or more values; otherwise we have an assignment mismatch.
|
// resulting in 2 or more values; otherwise we have an assignment mismatch.
|
||||||
if r != 1 {
|
if r != 1 {
|
||||||
if returnStmt != nil {
|
if returnStmt != nil {
|
||||||
rhs, _ := check.exprList(orig_rhs, false)
|
rhs := check.exprList(orig_rhs)
|
||||||
check.returnError(returnStmt, lhs, rhs)
|
check.returnError(returnStmt, lhs, rhs)
|
||||||
} else {
|
} else {
|
||||||
check.assignError(orig_rhs, l, r)
|
check.assignError(orig_rhs, l, r)
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) (
|
||||||
switch id {
|
switch id {
|
||||||
default:
|
default:
|
||||||
// make argument getter
|
// make argument getter
|
||||||
xlist, _ := check.exprList(call.ArgList, false)
|
xlist := check.exprList(call.ArgList)
|
||||||
arg = func(x *operand, i int) { *x = *xlist[i] }
|
arg = func(x *operand, i int) { *x = *xlist[i] }
|
||||||
nargs = len(xlist)
|
nargs = len(xlist)
|
||||||
// evaluate first argument, if present
|
// evaluate first argument, if present
|
||||||
|
|
|
||||||
|
|
@ -226,7 +226,7 @@ func (check *Checker) callExpr(x *operand, call *syntax.CallExpr) exprKind {
|
||||||
}
|
}
|
||||||
|
|
||||||
// evaluate arguments
|
// evaluate arguments
|
||||||
args, _ := check.exprList(call.ArgList, false)
|
args := check.exprList(call.ArgList)
|
||||||
sig = check.arguments(call, sig, targs, args, xlist)
|
sig = check.arguments(call, sig, targs, args, xlist)
|
||||||
|
|
||||||
if wasGeneric && sig.TypeParams().Len() == 0 {
|
if wasGeneric && sig.TypeParams().Len() == 0 {
|
||||||
|
|
@ -261,12 +261,12 @@ func (check *Checker) callExpr(x *operand, call *syntax.CallExpr) exprKind {
|
||||||
return statement
|
return statement
|
||||||
}
|
}
|
||||||
|
|
||||||
func (check *Checker) exprList(elist []syntax.Expr, allowCommaOk bool) (xlist []*operand, commaOk bool) {
|
func (check *Checker) exprList(elist []syntax.Expr) (xlist []*operand) {
|
||||||
switch len(elist) {
|
switch len(elist) {
|
||||||
case 0:
|
case 0:
|
||||||
// nothing to do
|
// nothing to do
|
||||||
case 1:
|
case 1:
|
||||||
return check.multiExpr(elist[0], allowCommaOk)
|
xlist, _ = check.multiExpr(elist[0], false)
|
||||||
default:
|
default:
|
||||||
// multiple (possibly invalid) values
|
// multiple (possibly invalid) values
|
||||||
xlist = make([]*operand, len(elist))
|
xlist = make([]*operand, len(elist))
|
||||||
|
|
|
||||||
|
|
@ -359,7 +359,7 @@ func (check *Checker) initVars(lhs []*Var, orig_rhs []ast.Expr, returnStmt ast.S
|
||||||
// resulting in 2 or more values; otherwise we have an assignment mismatch.
|
// resulting in 2 or more values; otherwise we have an assignment mismatch.
|
||||||
if r != 1 {
|
if r != 1 {
|
||||||
if returnStmt != nil {
|
if returnStmt != nil {
|
||||||
rhs, _ := check.exprList(orig_rhs, false)
|
rhs := check.exprList(orig_rhs)
|
||||||
check.returnError(returnStmt, lhs, rhs)
|
check.returnError(returnStmt, lhs, rhs)
|
||||||
} else {
|
} else {
|
||||||
check.assignError(orig_rhs, l, r)
|
check.assignError(orig_rhs, l, r)
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ func (check *Checker) builtin(x *operand, call *ast.CallExpr, id builtinId) (_ b
|
||||||
switch id {
|
switch id {
|
||||||
default:
|
default:
|
||||||
// make argument getter
|
// make argument getter
|
||||||
xlist, _ := check.exprList(call.Args, false)
|
xlist := check.exprList(call.Args)
|
||||||
arg = func(x *operand, i int) { *x = *xlist[i] }
|
arg = func(x *operand, i int) { *x = *xlist[i] }
|
||||||
nargs = len(xlist)
|
nargs = len(xlist)
|
||||||
// evaluate first argument, if present
|
// evaluate first argument, if present
|
||||||
|
|
|
||||||
|
|
@ -228,7 +228,7 @@ func (check *Checker) callExpr(x *operand, call *ast.CallExpr) exprKind {
|
||||||
}
|
}
|
||||||
|
|
||||||
// evaluate arguments
|
// evaluate arguments
|
||||||
args, _ := check.exprList(call.Args, false)
|
args := check.exprList(call.Args)
|
||||||
sig = check.arguments(call, sig, targs, args, xlist)
|
sig = check.arguments(call, sig, targs, args, xlist)
|
||||||
|
|
||||||
if wasGeneric && sig.TypeParams().Len() == 0 {
|
if wasGeneric && sig.TypeParams().Len() == 0 {
|
||||||
|
|
@ -263,12 +263,12 @@ func (check *Checker) callExpr(x *operand, call *ast.CallExpr) exprKind {
|
||||||
return statement
|
return statement
|
||||||
}
|
}
|
||||||
|
|
||||||
func (check *Checker) exprList(elist []ast.Expr, allowCommaOk bool) (xlist []*operand, commaOk bool) {
|
func (check *Checker) exprList(elist []ast.Expr) (xlist []*operand) {
|
||||||
switch len(elist) {
|
switch len(elist) {
|
||||||
case 0:
|
case 0:
|
||||||
// nothing to do
|
// nothing to do
|
||||||
case 1:
|
case 1:
|
||||||
return check.multiExpr(elist[0], allowCommaOk)
|
xlist, _ = check.multiExpr(elist[0], false)
|
||||||
default:
|
default:
|
||||||
// multiple (possibly invalid) values
|
// multiple (possibly invalid) values
|
||||||
xlist = make([]*operand, len(elist))
|
xlist = make([]*operand, len(elist))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue