From: Dmitry Vyukov Date: Mon, 26 Jan 2015 13:43:20 +0000 (+0300) Subject: cmd/gc: fix range typecheck order X-Git-Tag: go1.5beta1~2259 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9a36beb2afa7291d705213cdee4e8aa6c5b6aeb7;p=gostls13.git cmd/gc: fix range typecheck order 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 --- diff --git a/src/cmd/gc/range.c b/src/cmd/gc/range.c index 55fadae723..14bb1be88c 100644 --- a/src/cmd/gc/range.c +++ b/src/cmd/gc/range.c @@ -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