1
0
mirror of https://github.com/golang/go synced 2024-11-18 12:04:57 -07:00

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
This commit is contained in:
Russ Cox 2013-02-03 01:25:47 -05:00
parent 2eafbb8878
commit b2e0c34cf3

View File

@ -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;
}