diff options
author | Russ Cox <rsc@golang.org> | 2010-05-20 22:57:08 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-05-20 22:57:08 -0700 |
commit | 05a0e2fa64ad9c2ad69a12630313ba68c68de9ee (patch) | |
tree | c9e33bdcddfa36b85a97e6ece0b33c06e67382d6 /src/cmd/gc | |
parent | 9c07dc28bc9ff5e7d1e149f2413b7c101a4cd562 (diff) | |
download | golang-05a0e2fa64ad9c2ad69a12630313ba68c68de9ee.tar.gz |
gc: handle use of builtin function outside function call
tweaks & tests of last bug fix too.
R=ken2
CC=golang-dev
http://codereview.appspot.com/1207044
Diffstat (limited to 'src/cmd/gc')
-rw-r--r-- | src/cmd/gc/typecheck.c | 4 | ||||
-rw-r--r-- | src/cmd/gc/walk.c | 4 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/cmd/gc/typecheck.c b/src/cmd/gc/typecheck.c index 707546b10..b6940d412 100644 --- a/src/cmd/gc/typecheck.c +++ b/src/cmd/gc/typecheck.c @@ -89,6 +89,10 @@ typecheck(Node **np, int top) redo: lno = setlineno(n); if(n->sym) { + if(n->op == ONAME && n->etype != 0) { + yyerror("use of builtin %S not in function call", n->sym); + goto error; + } walkdef(n); if(n->op == ONONAME) goto error; diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 3098fa525..21bd0b56e 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -221,7 +221,9 @@ walkdef(Node *n) if(n->op == ONONAME) { if(!n->diag) { n->diag = 1; - yyerrorl(n->lineno, "undefined: %S", n->sym); + if(n->lineno != 0) + lineno = n->lineno; + yyerror("undefined: %S", n->sym); } return; } |