From: Robert Griesemer Date: Mon, 28 Mar 2011 20:38:24 +0000 (-0700) Subject: go/token: use array instead of map for token->string table X-Git-Tag: weekly.2011-03-28~5 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2796ac1466799973973661a9ef917501c0f8416c;p=gostls13.git go/token: use array instead of map for token->string table R=rsc CC=golang-dev https://golang.org/cl/4284070 --- diff --git a/src/pkg/go/token/token.go b/src/pkg/go/token/token.go index 2a2d3ecc4f..a5f21df168 100644 --- a/src/pkg/go/token/token.go +++ b/src/pkg/go/token/token.go @@ -126,10 +126,7 @@ const ( ) -// At the moment we have no array literal syntax that lets us describe -// the index for each element - use a map for now to make sure they are -// in sync. -var tokens = map[Token]string{ +var tokens = [...]string{ ILLEGAL: "ILLEGAL", EOF: "EOF", @@ -237,10 +234,14 @@ var tokens = map[Token]string{ // constant name (e.g. for the token IDENT, the string is "IDENT"). // func (tok Token) String() string { - if str, exists := tokens[tok]; exists { - return str + s := "" + if 0 <= tok && tok < Token(len(tokens)) { + s = tokens[tok] } - return "token(" + strconv.Itoa(int(tok)) + ")" + if s == "" { + s = "token(" + strconv.Itoa(int(tok)) + ")" + } + return s }