mirror of
https://github.com/golang/go
synced 2024-11-18 22:04:43 -07:00
go/types: in string(x) conversions, x must be of integer type
Fixes golang/go#11357. Change-Id: Id6994a0fe3830cf56d3dbdd60a4dff89404e5a41 Reviewed-on: https://go-review.googlesource.com/11365 Reviewed-by: Alan Donovan <adonovan@google.com>
This commit is contained in:
parent
6369699504
commit
8c8cd541fa
@ -20,7 +20,7 @@ func (check *Checker) conversion(x *operand, T Type) {
|
||||
switch t := T.Underlying().(*Basic); {
|
||||
case representableConst(x.val, check.conf, t.kind, &x.val):
|
||||
ok = true
|
||||
case x.isInteger() && isString(t):
|
||||
case isInteger(x.typ) && isString(t):
|
||||
codepoint := int64(-1)
|
||||
if i, ok := exact.Int64Val(x.val); ok {
|
||||
codepoint = i
|
||||
|
5
go/types/testdata/conversions.src
vendored
5
go/types/testdata/conversions.src
vendored
@ -32,6 +32,11 @@ func string_conversions() {
|
||||
const _ = string(true /* ERROR "cannot convert" */ )
|
||||
const _ = string(1.2 /* ERROR "cannot convert" */ )
|
||||
const _ = string(nil /* ERROR "cannot convert" */ )
|
||||
|
||||
// issues 11357, 11353: argument must be of integer type
|
||||
_ = string(0.0 /* ERROR "cannot convert" */ )
|
||||
_ = string(0i /* ERROR "cannot convert" */ )
|
||||
_ = string(1 /* ERROR "cannot convert" */ + 2i)
|
||||
}
|
||||
|
||||
func interface_conversions() {
|
||||
|
Loading…
Reference in New Issue
Block a user