blob: b8be7c3b9d287371ca9e19682c48a6f3a7089b0b [file] [edit]
// This code relies on pre-go1.28 string(integer) conversion rules;
// the build tag downgrades the file to go1.21 (the oldest version
// to which a build tag can downgrade).
//go:build go1.21
package fix
const (
small int64 = 'x'
large int64 = 1 << 40
)
func _(i int, i64 int64, u uint, u32 uint32, i8 int8, up uintptr) {
println(string(i)) // want `conversion from int to string yields...`
println(string(i64)) // want `conversion from int64 to string yields...`
println(string(u)) // want `conversion from uint to string yields...`
println(string(up)) // want `conversion from uintptr to string yields...`
println(string(u32)) // want `conversion from uint32 to string yields...`
println(string(i8)) // want `conversion from int8 to string yields...`
println(string(small)) // want `conversion from int64 to string yields...`
println(string(large)) // want `conversion from int64 to string yields...`
}
type myint int64
func (myint) String() string { return "" }
func _(m myint) {
// No fix is offered, since Sprintf might call a method (such as Format).
println(string(m)) // want `conversion from myint \(int64\) to string yields...`
// No fix is offered, since the constant overflows int32 and has no type.
println(string(1 << 40)) // want `conversion from untyped int to string yields...`
}