diff --git a/IDEHelper/Compiler/BfStmtEvaluator.cpp b/IDEHelper/Compiler/BfStmtEvaluator.cpp index e08b636c..c2bbe2f6 100644 --- a/IDEHelper/Compiler/BfStmtEvaluator.cpp +++ b/IDEHelper/Compiler/BfStmtEvaluator.cpp @@ -5845,8 +5845,6 @@ void BfModule::DoForLess(BfForEachStatement* forEachStmt) // Cond auto valueScopeStart = ValueScopeStart(); auto localVal = mBfIRBuilder->CreateLoad(localDef->mAddr); - if ((forEachStmt->mCollectionExpression != NULL) && (!didInference)) - target = CreateValueFromExpression(forEachStmt->mCollectionExpression, varType); if (!target) { // Soldier on diff --git a/IDEHelper/Tests/src/Loops.bf b/IDEHelper/Tests/src/Loops.bf index 88efae87..72c10767 100644 --- a/IDEHelper/Tests/src/Loops.bf +++ b/IDEHelper/Tests/src/Loops.bf @@ -28,6 +28,13 @@ namespace Tests } } + static int sGetValCount = 0; + + static int GetVal() + { + return 10 + sGetValCount++; + } + [Test] public static void TestBasics() { @@ -57,6 +64,14 @@ namespace Tests Test.Assert(e.mDispCount == 3); TestEnumerator2(e); Test.Assert(e.mDispCount == 4); + + int iterations = 0; + for (int i < GetVal()) + { + iterations++; + } + Test.Assert(iterations == 10); + Test.Assert(sGetValCount == 1); } public static void TestEnumerator1(EnumeratorTest e)