mirror of
https://github.com/golang/go
synced 2024-11-11 22:20:22 -07:00
[dev.typeparams] cmd/compile/internal/types2: convert untyped arguments to delete
For the predeclared "delete" function, types2 was checking that the second argument was assignable to the map's key type, but not actually updating the Types map as appropriate. So this could leave untyped constants in the AST. The error "cannot convert" is somewhat less precise than the previous "not assignable" error, but it's consistent with how types2 reports other erroneous assignments of untyped constants. Change-Id: Ic3ca3a3611ad0e4646c050e93088cdf992234e5f Reviewed-on: https://go-review.googlesource.com/c/go/+/285059 Trust: Matthew Dempsky <mdempsky@google.com> Trust: Robert Griesemer <gri@golang.org> Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Robert Griesemer <gri@golang.org> TryBot-Result: Go Bot <gobot@golang.org>
This commit is contained in:
parent
f03f934ede
commit
455c29af83
@ -368,8 +368,8 @@ func (check *Checker) builtin(x *operand, call *syntax.CallExpr, id builtinId) (
|
||||
return
|
||||
}
|
||||
|
||||
if !x.assignableTo(check, m.key, nil) {
|
||||
check.invalidArgf(x, "%s is not assignable to %s", x, m.key)
|
||||
check.assignment(x, m.key, "argument to delete")
|
||||
if x.mode == invalid {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -283,7 +283,7 @@ func delete1() {
|
||||
delete() // ERROR not enough arguments
|
||||
delete(1) // ERROR not enough arguments
|
||||
delete(1, 2, 3) // ERROR too many arguments
|
||||
delete(m, 0 /* ERROR not assignable */)
|
||||
delete(m, 0 /* ERROR cannot convert */)
|
||||
delete(m, s)
|
||||
_ = delete /* ERROR used as value */ (m, s)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user