mirror of
https://github.com/golang/go
synced 2024-11-23 16:00:06 -07:00
[dev.typeparams] go/types: fix some merge errors in call.go
Some comments were left unresolved in the merge of call.go. Resolve them to get tests to pass (tests to be added in a later CL). Change-Id: Icf894593e7dd5131406c4eece8d43d4cd3170d1c Reviewed-on: https://go-review.googlesource.com/c/go/+/284255 Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Robert Griesemer <gri@golang.org> Trust: Robert Griesemer <gri@golang.org> Trust: Robert Findley <rfindley@google.com>
This commit is contained in:
parent
3e15bf7716
commit
48a3cb399d
@ -116,9 +116,7 @@ func (check *Checker) call(x *operand, call *ast.CallExpr, orig ast.Expr) exprKi
|
||||
// If the first argument is a type, assume we have explicit type arguments.
|
||||
|
||||
// check number of type arguments
|
||||
// TODO(rFindley)
|
||||
// if !check.conf.InferFromConstraints && n != len(sig.tparams) || n > len(sig.tparams) {
|
||||
if n != len(sig.tparams) || n > len(sig.tparams) {
|
||||
if n > len(sig.tparams) {
|
||||
check.errorf(args[n-1], 0, "got %d type arguments but want %d", n, len(sig.tparams))
|
||||
x.mode = invalid
|
||||
x.expr = orig
|
||||
@ -127,7 +125,8 @@ func (check *Checker) call(x *operand, call *ast.CallExpr, orig ast.Expr) exprKi
|
||||
|
||||
// collect types
|
||||
targs := make([]Type, n)
|
||||
// TODO(rFindley) positioner?
|
||||
// TODO(rFindley) use a positioner here? instantiate would need to be
|
||||
// updated accordingly.
|
||||
poslist := make([]token.Pos, n)
|
||||
for i, a := range args {
|
||||
if a.mode != typexpr {
|
||||
@ -192,7 +191,11 @@ func (check *Checker) call(x *operand, call *ast.CallExpr, orig ast.Expr) exprKi
|
||||
return expression
|
||||
}
|
||||
|
||||
// If we reach here, orig must have been a regular call, not an index expression.
|
||||
// If we reach here, orig must have been a regular call, not an index
|
||||
// expression.
|
||||
// TODO(rFindley) with a manually constructed AST it is possible to reach
|
||||
// this assertion. We should return an invalidAST error here
|
||||
// rather than panicking.
|
||||
assert(!call.Brackets)
|
||||
|
||||
sig = check.arguments(call, sig, args)
|
||||
@ -411,15 +414,10 @@ func (check *Checker) arguments(call *ast.CallExpr, sig *Signature, args []*oper
|
||||
if failed >= 0 {
|
||||
// Some type arguments couldn't be inferred. Use
|
||||
// bounds type inference to try to make progress.
|
||||
// TODO(rFindley)
|
||||
/*
|
||||
if check.conf.InferFromConstraints {
|
||||
targs, failed = check.inferB(sig.tparams, targs)
|
||||
if targs == nil {
|
||||
return // error already reported
|
||||
}
|
||||
}
|
||||
*/
|
||||
targs, failed = check.inferB(sig.tparams, targs)
|
||||
if targs == nil {
|
||||
return // error already reported
|
||||
}
|
||||
if failed >= 0 {
|
||||
// at least one type argument couldn't be inferred
|
||||
assert(targs[failed] == nil)
|
||||
|
Loading…
Reference in New Issue
Block a user