aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/compile/internal/types2/operand.go
diff options
context:
space:
mode:
authorRobert Griesemer <gri@golang.org>2020-11-19 09:09:15 -0800
committerRobert Griesemer <gri@golang.org>2020-11-19 18:46:33 +0000
commit0123c9b32165302deb200683b4f855d572a934b6 (patch)
treeef1c3fce2cac916815edd2f68e86710d03d1e5b4 /src/cmd/compile/internal/types2/operand.go
parent21400491728520e648d8f1634605ea2b704a8fc2 (diff)
downloadgo-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.go8
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.