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:
parent
2eafbb8878
commit
b2e0c34cf3
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user