mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
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: Robert Griesemer <gri@golang.org> Run-TryBot: Robert Griesemer <gri@golang.org>
This commit is contained in:
parent
8b11e0b42d
commit
871300308a
2 changed files with 3 additions and 5 deletions
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue