]> Cypherpunks repositories - gostls13.git/commitdiff
go/parser: improved error message for unexpected literals
authorRobert Griesemer <gri@golang.org>
Wed, 17 Jan 2018 00:17:54 +0000 (16:17 -0800)
committerRobert Griesemer <gri@golang.org>
Mon, 12 Feb 2018 21:43:41 +0000 (21:43 +0000)
R=go1.11

This is a follow up for #11377 which reported that an error like

/tmp/xx.go:9:6: expected '(', found 'IDENT' F1

shouldn't print 'IDENT', as it's just an internal detail.
The relevant change wasn't made in the original fix, so here it is.

For #11377.

Change-Id: Ib76957d86b88e3e63646fbe4abf03a3b9d045139
Reviewed-on: https://go-review.googlesource.com/87900
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
src/go/parser/parser.go

index 6f2955fd509000da9c093718be1a2da09e8f042d..7671d2a4bb331d7fd009b3bdee1f6b4598e36a79 100644 (file)
@@ -375,13 +375,14 @@ func (p *parser) errorExpected(pos token.Pos, msg string) {
        if pos == p.pos {
                // the error happened at the current position;
                // make the error message more specific
-               if p.tok == token.SEMICOLON && p.lit == "\n" {
+               switch {
+               case p.tok == token.SEMICOLON && p.lit == "\n":
                        msg += ", found newline"
-               } else {
+               case p.tok.IsLiteral():
+                       // print 123 rather than 'INT', etc.
+                       msg += ", found " + p.lit
+               default:
                        msg += ", found '" + p.tok.String() + "'"
-                       if p.tok.IsLiteral() {
-                               msg += " " + p.lit
-                       }
                }
        }
        p.error(pos, msg)