]> Cypherpunks repositories - gostls13.git/commitdiff
error about & at top level until it is safe
authorRuss Cox <rsc@golang.org>
Thu, 16 Oct 2008 00:09:42 +0000 (17:09 -0700)
committerRuss Cox <rsc@golang.org>
Thu, 16 Oct 2008 00:09:42 +0000 (17:09 -0700)
R=ken
OCL=17241
CL=17241

src/cmd/gc/go.h
src/cmd/gc/go.y

index eb8806779ecc35599a65d9fe7e3e04eae7ef2dd5..92dc1260c986c087ab82fb5583376d72cb9727d7 100644 (file)
@@ -468,6 +468,8 @@ EXTERN      int32   thunk;
 
 EXTERN int     exporting;
 
+EXTERN int     func;
+
 /*
  *     y.tab.c
  */
index f08421b5d43b6e991308f548557e6043054ca9c9..d36b74621c8036204aae7df60949c37c74c7d494 100644 (file)
@@ -754,6 +754,8 @@ uexpr:
        }
 |      '&' uexpr
        {
+               if($2->op == OCONV && !func)
+                       yyerror("& of composite literal at top level");
                $$ = nod(OADDR, $2, N);
        }
 |      '+' uexpr
@@ -1179,11 +1181,13 @@ xfndcl:
        {
                maxarg = 0;
                stksize = 0;
+               func++;
        } fndcl fnbody
        {
                $$ = $3;
                $$->nbody = $4;
                funcbody($$);
+               func--;
        }
 
 fndcl: