diff --git a/src/cmd/compile/internal/types2/call.go b/src/cmd/compile/internal/types2/call.go index 4b854df774..834d2f467f 100644 --- a/src/cmd/compile/internal/types2/call.go +++ b/src/cmd/compile/internal/types2/call.go @@ -419,17 +419,6 @@ func (check *Checker) genericExprList(elist []syntax.Expr) []*operand { func (check *Checker) arguments(call *syntax.CallExpr, sig *Signature, targs []Type, xlist []syntax.Expr, args []*operand) (rsig *Signature) { rsig = sig - // TODO(gri) try to eliminate this extra verification loop - for _, a := range args { - switch a.mode { - case typexpr: - check.errorf(a, NotAnExpr, "%s used as value", a) - return - case invalid: - return - } - } - // Function call argument/parameter count requirements // // | standard call | dotdotdot call | diff --git a/src/go/types/call.go b/src/go/types/call.go index 313b469346..3fa8cbb16c 100644 --- a/src/go/types/call.go +++ b/src/go/types/call.go @@ -424,17 +424,6 @@ func (check *Checker) genericExprList(elist []ast.Expr) []*operand { func (check *Checker) arguments(call *ast.CallExpr, sig *Signature, targs []Type, xlist []ast.Expr, args []*operand) (rsig *Signature) { rsig = sig - // TODO(gri) try to eliminate this extra verification loop - for _, a := range args { - switch a.mode { - case typexpr: - check.errorf(a, NotAnExpr, "%s used as value", a) - return - case invalid: - return - } - } - // Function call argument/parameter count requirements // // | standard call | dotdotdot call | diff --git a/src/internal/types/testdata/check/expr3.go b/src/internal/types/testdata/check/expr3.go index da8d54fd1d..91534cdd62 100644 --- a/src/internal/types/testdata/check/expr3.go +++ b/src/internal/types/testdata/check/expr3.go @@ -505,7 +505,7 @@ func _calls() { f2(3.14) /* ERROR "not enough arguments in call to f2\n\thave (number)\n\twant (float32, string)" */ f2(3.14, "foo") f2(x /* ERRORx `cannot use .* in argument` */ , "foo") - f2(g0 /* ERROR "used as value" */ ()) + f2(g0 /* ERROR "used as value" */ ()) /* ERROR "not enough arguments in call to f2\n\thave (func())\n\twant (float32, string)" */ f2(g1()) /* ERROR "not enough arguments in call to f2\n\thave (int)\n\twant (float32, string)" */ f2(g2()) diff --git a/src/internal/types/testdata/fixedbugs/issue39634.go b/src/internal/types/testdata/fixedbugs/issue39634.go index 592496033b..591b00e404 100644 --- a/src/internal/types/testdata/fixedbugs/issue39634.go +++ b/src/internal/types/testdata/fixedbugs/issue39634.go @@ -66,7 +66,7 @@ type Z19 [][[]Z19{}[0][0]]c19 /* ERROR "undefined" */ // crash 20 type Z20 /* ERROR "invalid recursive type" */ interface{ Z20 } -func F20[t Z20]() { F20(t /* ERROR "invalid composite literal type" */ {}) } +func F20[t Z20]() { F20(t /* ERROR "invalid composite literal type" */ /* ERROR "too many arguments in call to F20\n\thave (unknown type)\n\twant ()" */ {}) } // crash 21 type Z21 /* ERROR "invalid recursive type" */ interface{ Z21 }