From: Russ Cox Date: Sun, 11 Apr 2010 21:51:35 +0000 (-0700) Subject: gc: make sure main.main has correct type X-Git-Tag: weekly.2010-04-13~17 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=fe7826858c6923f8c18acfa9926cd36192883bdc;p=gostls13.git gc: make sure main.main has correct type R=ken2 CC=golang-dev https://golang.org/cl/883049 --- diff --git a/src/cmd/gc/go.y b/src/cmd/gc/go.y index 06696d52fc..98f671988f 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($$); diff --git a/test/fixedbugs/bug039.go b/test/fixedbugs/bug039.go index 30fbdbd3fa..7ac02ceeb2 100644 --- a/test/fixedbugs/bug039.go +++ b/test/fixedbugs/bug039.go @@ -6,6 +6,6 @@ package main -func main (x int) { // GCCGO_ERROR "previous" +func f (x int) { // GCCGO_ERROR "previous" var x int; // ERROR "redecl|redefinition" }