Commit 13f3149a authored by Russ Cox's avatar Russ Cox

more helpful messages for name-related syntax errors.

R=ken
OCL=15477
CL=15479
parent 9f35e8b2
......@@ -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;
}
/**/
......@@ -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;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment