1
0
mirror of https://github.com/golang/go synced 2024-11-19 02:14:43 -07:00

more helpful messages for name-related syntax errors.

R=ken
OCL=15477
CL=15479
This commit is contained in:
Russ Cox 2008-09-18 13:32:14 -07:00
parent 9f35e8b227
commit 13f3149a01
2 changed files with 56 additions and 1 deletions

View File

@ -1644,3 +1644,58 @@ hidden_importfield:
$$ = $2;
$$->fsym = $1;
}
/*
* helpful error messages.
* THIS SECTION MUST BE AT THE END OF THE FILE.
*
* these rules trigger reduce/reduce conflicts in the grammar.
* they are safe because reduce/reduce conflicts are resolved
* in favor of rules appearing earlier in the grammar, and these
* are at the end of the file.
*
* to check whether the rest of the grammar is free of
* reduce/reduce conflicts, comment this section out by
* removing the slash on the next line.
*/
lpack:
LATYPE
{
yyerror("%s is type, not package", $1->name);
YYERROR;
}
laconst:
LPACK
{
// for LALR(1) reasons, using laconst works here
// but lname does not. even so, the messages make
// more sense saying "var" instead of "const".
yyerror("%s is package, not var", $1->name);
YYERROR;
}
| LATYPE
{
yyerror("%s is type, not var", $1->name);
YYERROR;
}
latype:
LACONST
{
yyerror("%s is const, not type", $1->name);
YYERROR;
}
| LPACK
{
yyerror("%s is package, not type", $1->name);
YYERROR;
}
| LNAME
{
yyerror("%s is var, not type", $1->name);
YYERROR;
}
/**/

View File

@ -1420,7 +1420,7 @@ walkdot(Node *n)
f = lookdot(n->right, t->method);
if(f == T) {
yyerror("undefined DOT reference %N", n->right);
yyerror("undefined DOT %s", n->right->sym->name);
return;
}