From 7ac393a3f208ab72263a245b80e22ad62abae565 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Tue, 16 Jan 2018 16:17:54 -0800 Subject: [PATCH] go/parser: improved error message for unexpected literals 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 --- src/go/parser/parser.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/go/parser/parser.go b/src/go/parser/parser.go index 6f2955fd50..7671d2a4bb 100644 --- a/src/go/parser/parser.go +++ b/src/go/parser/parser.go @@ -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) -- 2.50.0