ref: c40f319b0a288ac9021513083c4abcb261d2822c
parent: 077b43497cb528d529f0d7380b0ebd58e46b0674
author: Ori Bernstein <[email protected]>
date: Fri Jun 15 15:20:35 EDT 2012
Better errors for unknown names.
--- a/parse/infer.c
+++ b/parse/infer.c
@@ -142,8 +142,9 @@
{
char *s;
switch (n->type) {
- case Nexpr: s = opstr(exprop(n)); break;
- default: s = nodestr(n->type); break;
+ case Nexpr: s = opstr(exprop(n)); break;
+ case Nname: s = namestr(n); break;
+ default: s = nodestr(n->type); break;
}
return s;
}
@@ -352,7 +353,7 @@
case Ovar: /* a:@a -> @a */
s = getdcl(curstab(), args[0]);
if (!s)
- fatal(n->line, "Undeclared var %s", declname(args[0]));
+ fatal(n->line, "Undeclared var %s", ctxstr(args[0]));
else
settype(n, s->type);
n->expr.did = s->id;
--- a/parse/parse.h
+++ b/parse/parse.h
@@ -336,6 +336,7 @@
Node *mkslice(int line, Node *base, Node *off);
/* node util functions */
+char *namestr(Node *name);
char *declname(Node *n);
Type *decltype(Node *n);
Type *exprtype(Node *n);
@@ -344,7 +345,6 @@
void setns(Node *n, char *name);
Op exprop(Node *n);
Node **aggrmemb(Type *t, size_t *n);
-char *namestr(Node *name);
/* usefiles */
void readuse(Node *use, Stab *into);