summaryrefslogtreecommitdiff
path: root/src/cmd/gc
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc')
-rw-r--r--src/cmd/gc/go.y11
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($$);