diff options
author | Robert Griesemer <gri@golang.org> | 2021-01-27 17:03:00 -0800 |
---|---|---|
committer | Robert Griesemer <gri@golang.org> | 2021-01-28 16:30:00 +0000 |
commit | c0bf904ddf89b549a4a9d91a634fea1422744c33 (patch) | |
tree | f4bef08cb2d3a1d88a6edab01d6c723a23f857f7 /src/cmd/compile/internal/types2/operand.go | |
parent | f7d1c5990b9aed6a402c3cbdae6f43638172918d (diff) | |
download | go-c0bf904ddf89b549a4a9d91a634fea1422744c33.tar.gz go-c0bf904ddf89b549a4a9d91a634fea1422744c33.zip |
[dev.typeparams] cmd/compile/internal/types2: translate syntax to token constants via tables
This makes the respective files match the respective go/types files
a tad more.
Change-Id: Ie555e18ed23c493379a1e56b96276867190106f0
Reviewed-on: https://go-review.googlesource.com/c/go/+/287492
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
Diffstat (limited to 'src/cmd/compile/internal/types2/operand.go')
-rw-r--r-- | src/cmd/compile/internal/types2/operand.go | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/cmd/compile/internal/types2/operand.go b/src/cmd/compile/internal/types2/operand.go index a14120c2c9..dcd29fbce0 100644 --- a/src/cmd/compile/internal/types2/operand.go +++ b/src/cmd/compile/internal/types2/operand.go @@ -206,29 +206,23 @@ func (x *operand) String() string { // setConst sets x to the untyped constant for literal lit. func (x *operand) setConst(k syntax.LitKind, lit string) { - var tok token.Token var kind BasicKind switch k { case syntax.IntLit: - tok = token.INT kind = UntypedInt case syntax.FloatLit: - tok = token.FLOAT kind = UntypedFloat case syntax.ImagLit: - tok = token.IMAG kind = UntypedComplex case syntax.RuneLit: - tok = token.CHAR kind = UntypedRune case syntax.StringLit: - tok = token.STRING kind = UntypedString default: unreachable() } - val := constant.MakeFromLiteral(lit, tok, 0) + val := constant.MakeFromLiteral(lit, kind2tok[k], 0) if val.Kind() == constant.Unknown { x.mode = invalid x.typ = Typ[Invalid] @@ -334,3 +328,12 @@ func (x *operand) assignableTo(check *Checker, T Type, reason *string) bool { return false } + +// kind2tok translates syntax.LitKinds into token.Tokens. +var kind2tok = [...]token.Token{ + syntax.IntLit: token.INT, + syntax.FloatLit: token.FLOAT, + syntax.ImagLit: token.IMAG, + syntax.RuneLit: token.CHAR, + syntax.StringLit: token.STRING, +} |