]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: report more precise errors about untyped constants
authorMatthew Dempsky <mdempsky@google.com>
Fri, 6 Sep 2019 23:05:36 +0000 (16:05 -0700)
committerMatthew Dempsky <mdempsky@google.com>
Mon, 9 Sep 2019 22:12:15 +0000 (22:12 +0000)
commite710a1fb2e36b645b103d9f72d47837171336279
tree38f1dd43eb1a8e561e3ae5516c6befbdd54887c3
parent51c8d969bd8a9992002a11373f91564c326e6d77
cmd/compile: report more precise errors about untyped constants

Previously, we used a single "untyped number" type for all untyped
numeric constants. This led to vague error messages like "string(1.0)"
reporting that "1 (type untyped number)" can't be converted to string,
even though "string(1)" is valid.

This CL makes cmd/compile more like go/types by utilizing
types.Ideal{int,rune,float,complex} instead of types.Types[TIDEAL],
and keeping n.Type in sync with n.Val().Ctype() during constant
folding.

Thanks to K Heller for looking into this issue, and for the included
test case.

Fixes #21979.

Change-Id: Ibfea88c05704bc3c0a502a455d018a375589754d
Reviewed-on: https://go-review.googlesource.com/c/go/+/194019
Reviewed-by: Robert Griesemer <gri@golang.org>
src/cmd/compile/internal/gc/bimport.go
src/cmd/compile/internal/gc/const.go
src/cmd/compile/internal/gc/fmt.go
src/cmd/compile/internal/gc/iimport.go
src/cmd/compile/internal/gc/typecheck.go
src/cmd/compile/internal/gc/universe.go
src/cmd/compile/internal/types/identity.go
src/cmd/compile/internal/types/type.go
test/fixedbugs/issue20185.go
test/fixedbugs/issue21979.go [new file with mode: 0644]
test/fixedbugs/issue7310.go