]> Cypherpunks.ru repositories - gostls13.git/commit
go/types, go/constant: handle infinities as unknown values
authorRobert Griesemer <gri@golang.org>
Thu, 19 Nov 2020 20:40:19 +0000 (12:40 -0800)
committerRobert Griesemer <gri@golang.org>
Fri, 20 Nov 2020 00:09:05 +0000 (00:09 +0000)
commit7eed73f36f14cfb2f49b0ef95beb2ae94a64f66e
tree0642717972e2e4ffc96d5c581438e4af43f48afe
parentf3ce010b331513b4dca26a12dc0fd12dc4385d9c
go/types, go/constant: handle infinities as unknown values

With this change, constant literals (and results of constant
operations) that internally become infinities are represented
externally (to go/constant) as "unknown" values.

The language has no provisions to deal with infinite constants,
and producing unknown values allows the typechecker to report
errors and avoid invalid operations (such as multiplication of
zero with infinity).

Fixes #20583.

Change-Id: I12f36a17d262ff7957b0d3880241b5a8b2984777
Reviewed-on: https://go-review.googlesource.com/c/go/+/271706
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/go/constant/value.go
src/go/constant/value_test.go
src/go/types/expr.go
src/go/types/fixedbugs/issue20583.src [new file with mode: 0644]
src/go/types/stmt.go