]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/gc: fix range typecheck order
authorDmitry Vyukov <dvyukov@google.com>
Mon, 26 Jan 2015 13:43:20 +0000 (16:43 +0300)
committerDmitry Vyukov <dvyukov@google.com>
Tue, 27 Jan 2015 18:07:52 +0000 (18:07 +0000)
Typecheck for range variables before typechecking for range body.
Body can refer to new vars declared in for range,
so it is preferable to typecheck them before the body.
Makes typecheck order consistent between ORANGE and OFOR.

This come up during another change that computes some predicates
on variables during typechecking.

Change-Id: Ic975db61b1fd5b7f9ee78896d4cc7d93c593c532
Reviewed-on: https://go-review.googlesource.com/3284
Reviewed-by: Russ Cox <rsc@golang.org>
src/cmd/gc/range.c

index 55fadae72387c335d331edadb64ad4fabc4f9641..14bb1be88c82a6be16d7c69c38780d3bb99c00e7 100644 (file)
@@ -98,13 +98,13 @@ typecheckrange(Node *n)
        }
 
 out:
-       typechecklist(n->nbody, Etop);
-
        // second half of dance
        n->typecheck = 1;
        for(ll=n->list; ll; ll=ll->next)
                if(ll->n->typecheck == 0)
                        typecheck(&ll->n, Erv | Easgn);
+
+       typechecklist(n->nbody, Etop);
 }
 
 void