From: Russ Cox Date: Sat, 22 Dec 2012 21:45:35 +0000 (-0500) Subject: cmd/yacc: fix debug print of token name X-Git-Tag: go1.1rc2~1544 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b3bb4bd2925bc6715e5c91175021a2386f4017bb;p=gostls13.git cmd/yacc: fix debug print of token name The array skips the first TOKSTART entries. Fixes #4410. R=golang-dev, ken2, ken CC=golang-dev https://golang.org/cl/6999054 --- diff --git a/src/cmd/yacc/units.y b/src/cmd/yacc/units.y index 00ccaf2ece..9c1b0b3364 100644 --- a/src/cmd/yacc/units.y +++ b/src/cmd/yacc/units.y @@ -11,6 +11,11 @@ %{ +// This tag will end up in the generated y.go, so that forgetting +// 'make clean' does not fail the next build. + +// +build ignore + // units.y // example of a Go yacc program // usage is diff --git a/src/cmd/yacc/yacc.go b/src/cmd/yacc/yacc.go index 62655e7cd2..0c18f93b6c 100644 --- a/src/cmd/yacc/yacc.go +++ b/src/cmd/yacc/yacc.go @@ -3228,9 +3228,10 @@ type $$Lexer interface { const $$Flag = -1000 func $$Tokname(c int) string { - if c > 0 && c <= len($$Toknames) { - if $$Toknames[c-1] != "" { - return $$Toknames[c-1] + // 4 is TOKSTART above + if c >= 4 && c-4 < len($$Toknames) { + if $$Toknames[c-4] != "" { + return $$Toknames[c-4] } } return __yyfmt__.Sprintf("tok-%v", c)