From d26afd7273c8aabfb92157df55eadbc907c6fb65 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 15 Sep 2019 11:07:51 -0700 Subject: [PATCH] for-in or for-of expression is evaluated before loop back edge --- src/compiler/binder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 6efc4ae05b0..5006e841dc7 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -1032,12 +1032,12 @@ namespace ts { function bindForInOrForOfStatement(node: ForInOrOfStatement): void { const preLoopLabel = createLoopLabel(); const postLoopLabel = createBranchLabel(); + bind(node.expression); addAntecedent(preLoopLabel, currentFlow); currentFlow = preLoopLabel; if (node.kind === SyntaxKind.ForOfStatement) { bind(node.awaitModifier); } - bind(node.expression); addAntecedent(postLoopLabel, currentFlow); bind(node.initializer); if (node.initializer.kind !== SyntaxKind.VariableDeclarationList) {