diff options
author | Robert Griesemer <gri@golang.org> | 2020-11-19 09:09:15 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2020-11-19 18:46:33 +0000 |
commit | 0123c9b32165302deb200683b4f855d572a934b6 (patch) | |
tree | ef1c3fce2cac916815edd2f68e86710d03d1e5b4 /src/cmd/compile/internal/types2/operand.go | |
parent | 21400491728520e648d8f1634605ea2b704a8fc2 (diff) | |
download | go-0123c9b32165302deb200683b4f855d572a934b6.tar.gz go-0123c9b32165302deb200683b4f855d572a934b6.zip |
[dev.typeparams] cmd/compile/internal/types2: report an error for invalid constant values
This is https://golang.org/cl/271377 ported to types2.
Updates #42695.
Change-Id: I475bdcaeace5b0e87d4476a6d660996534289666
Reviewed-on: https://go-review.googlesource.com/c/go/+/271520
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/operand.go')
-rw-r--r-- | src/cmd/compile/internal/types2/operand.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/types2/operand.go b/src/cmd/compile/internal/types2/operand.go index fe88921893..0a19760423 100644 --- a/src/cmd/compile/internal/types2/operand.go +++ b/src/cmd/compile/internal/types2/operand.go @@ -211,9 +211,15 @@ func (x *operand) setConst(k syntax.LitKind, lit string) { unreachable() } + val := constant.MakeFromLiteral(lit, tok, 0) + if val.Kind() == constant.Unknown { + x.mode = invalid + x.typ = Typ[Invalid] + return + } x.mode = constant_ x.typ = Typ[kind] - x.val = constant.MakeFromLiteral(lit, tok, 0) + x.val = val } // isNil reports whether x is the nil value. |