diff options
author | Russ Cox <rsc@golang.org> | 2010-04-11 14:51:35 -0700 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2010-04-11 14:51:35 -0700 |
commit | cc06efd94099837c0744e8d8fce883ba9ec318d4 (patch) | |
tree | 4fb4262bc0c86bbe5a68b509ed1e87b72851229b /src | |
parent | 4ecc4c5f35e90ddbea7072cbc34bf3551127ebb7 (diff) | |
download | golang-cc06efd94099837c0744e8d8fce883ba9ec318d4.tar.gz |
gc: make sure main.main has correct type
R=ken2
CC=golang-dev
http://codereview.appspot.com/883049
Diffstat (limited to 'src')
-rw-r--r-- | src/cmd/gc/go.y | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 06696d52f..98f671988 100644 --- a/src/cmd/gc/go.y +++ b/src/cmd/gc/go.y @@ -1070,11 +1070,18 @@ fndcl: $3 = checkarglist($3, 1); $$ = nod(ODCLFUNC, N, N); $$->nname = $1; - if($3 == nil && $5 == nil) - $$->nname = renameinit($1); n = nod(OTFUNC, N, N); n->list = $3; n->rlist = $5; + if(strcmp($1->sym->name, "init") == 0) { + $$->nname = renameinit($1); + if($3 != nil || $5 != nil) + yyerror("func init must have no arguments and no return values"); + } + if(strcmp(localpkg->name, "main") == 0 && strcmp($1->sym->name, "main") == 0) { + if($3 != nil || $5 != nil) + yyerror("func main must have no arguments and no return values"); + } // TODO: check if nname already has an ntype $$->nname->ntype = n; funchdr($$); |