From 9a36beb2afa7291d705213cdee4e8aa6c5b6aeb7 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Mon, 26 Jan 2015 16:43:20 +0300 Subject: [PATCH] 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 --- src/cmd/gc/range.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 -- 2.50.0