]> Cypherpunks repositories - gostls13.git/commit
go/types, types2: better error messages for copy built-in
authorRobert Griesemer <gri@golang.org>
Thu, 6 Mar 2025 23:44:01 +0000 (15:44 -0800)
committerGopher Robot <gobot@golang.org>
Tue, 11 Mar 2025 04:30:51 +0000 (21:30 -0700)
commit2d097e363a6fce725802ecbde6d0d1b90f45290d
treef3ad51c33c79341df181d296655eab51880041bf
parente3ea8e68fb91bdc510cb7702981609ce5a9da12e
go/types, types2: better error messages for copy built-in

Rather than relying on coreString, use the new commonUnder function
to determine the argument slice element types.

Factor out this functionality, which is shared for append and copy,
into a new helper function sliceElem (similar to chanElem).
Use sliceElem for both the append and copy implementation.
As a result, the error messages for invalid copy calls are
now more detailed.

While at it, handle the special cases for append and copy first
because they don't need the slice element computation.

Finally, share the same type recording code for the special and
general cases.

As an aside, in commonUnder, be clearer in the code that the
result is either a nil type and an error, or a non-nil type
and a nil error. This matches in style what we do in sliceElem.

Change-Id: I318bafc0d2d31df04f33b1b464ad50d581918671
Reviewed-on: https://go-review.googlesource.com/c/go/+/655675
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Robert Griesemer <gri@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Robert Griesemer <gri@google.com>
src/cmd/compile/internal/types2/builtins.go
src/cmd/compile/internal/types2/under.go
src/go/types/builtins.go
src/go/types/under.go
src/internal/types/testdata/check/builtins0.go
src/internal/types/testdata/check/builtins1.go
src/internal/types/testdata/fixedbugs/issue49735.go
test/copy1.go
test/fixedbugs/issue7310.go