compiler: fix non-int integer constants

Before this change, the compiler could panic with the following message:

    panic: 20 not an Int

That of course doesn't make much sense. But it apparently is expected
behavior, see https://github.com/golang/go/issues/43165 for details.

This commit fixes this issue by converting the constant to an integer if
needed.
This commit is contained in:
Ayke van Laethem
2020-12-23 16:49:47 +01:00
committed by Ron Evans
parent 5917b8baa2
commit fb0bb69f62
3 changed files with 10 additions and 3 deletions
+5
View File
@@ -70,6 +70,11 @@ func main() {
println(ashrNeg == -1)
println(ashrOverflow == 0)
println(ashrNegOverflow == -1)
// fix for a bug in constant numbers
println("constant number")
x := uint32(5)
println(uint32(x) / (20e0 / 1))
}
var x = true
+2
View File
@@ -62,3 +62,5 @@ true
true
true
true
constant number
0