Commit 87130030 authored by Alberto Donizetti's avatar Alberto Donizetti Committed by Robert Griesemer

cmd/compile: never report "truncated to real" for toint calls

Whoever called toint() is expecting the {Mpint, Mpflt, Mpcplx} arg to
be converted to an integer expression, so it never makes sense to
report an error as "constant X truncated to real".

Fixes #11580

Change-Id: Iadcb105f0802358a7f77188c2b1e63fe80c5580c
Reviewed-on: https://go-review.googlesource.com/34638
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarRobert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
parent 8b11e0b4
......@@ -458,12 +458,10 @@ func toint(v Val) Val {
case *Mpcplx:
i := new(Mpint)
if i.SetFloat(&u.Real) < 0 {
if i.SetFloat(&u.Real) < 0 || u.Imag.CmpFloat64(0) != 0 {
yyerror("constant %v%vi truncated to integer", fconv(&u.Real, FmtSharp), fconv(&u.Imag, FmtSharp|FmtSign))
}
if u.Imag.CmpFloat64(0) != 0 {
yyerror("constant %v%vi truncated to real", fconv(&u.Real, FmtSharp), fconv(&u.Imag, FmtSharp|FmtSign))
}
v.U = i
}
......
......@@ -13,6 +13,6 @@ var c []int = []int{2.0: 2}
var d []int = []int{-2.0: 2} // ERROR "must be non-negative integer constant"
var e []int = []int{3 + 0i: 3}
var f []int = []int{3i: 3} // ERROR "truncated to real"
var f []int = []int{3i: 3} // ERROR "truncated to integer"
var g []int = []int{"a": 4} // ERROR "must be non-negative integer constant"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment