From: Russ Cox Date: Sun, 3 Feb 2013 06:25:47 +0000 (-0500) Subject: cmd/gc: remove reference to ? and @ symbols in error message X-Git-Tag: go1.1rc2~1172 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b2e0c34cf32a82cf808bfc54134a2cf1d8042429;p=gostls13.git 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 --- 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; }