From b2e0c34cf32a82cf808bfc54134a2cf1d8042429 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Sun, 3 Feb 2013 01:25:47 -0500 Subject: [PATCH] cmd/gc: remove reference to ? and @ symbols in error message Those symbols are only allowed during imports; the parser may expect them but saying that doesn't help users. Fixes #3434. R=ken2 CC=golang-dev https://golang.org/cl/7277045 --- src/cmd/gc/subr.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c index 01e738bf9d..323d4f3922 100644 --- a/src/cmd/gc/subr.c +++ b/src/cmd/gc/subr.c @@ -151,14 +151,23 @@ yyerror(char *fmt, ...) if(lastsyntax == lexlineno) return; lastsyntax = lexlineno; - - if(strstr(fmt, "{ or {")) { + + if(strstr(fmt, "{ or {") || strstr(fmt, " or ?") || strstr(fmt, " or @")) { // The grammar has { and LBRACE but both show up as {. // Rewrite syntax error referring to "{ or {" to say just "{". strecpy(buf, buf+sizeof buf, fmt); p = strstr(buf, "{ or {"); if(p) memmove(p+1, p+6, strlen(p+6)+1); + + // The grammar has ? and @ but only for reading imports. + // Silence them in ordinary errors. + p = strstr(buf, " or ?"); + if(p) + memmove(p, p+5, strlen(p+5)+1); + p = strstr(buf, " or @"); + if(p) + memmove(p, p+5, strlen(p+5)+1); fmt = buf; }