Pārlūkot izejas kodu

create proper temp var for upper IntIterator bound (closes #4702)

Simon Krajewski 9 gadi atpakaļ
vecāks
revīzija
f3d6fa29ba
2 mainītis faili ar 13 papildinājumiem un 1 dzēšanām
  1. 1 1
      optimizer.ml
  2. 12 0
      tests/unit/src/unit/issues/Issue4702.hx

+ 1 - 1
optimizer.ml

@@ -729,7 +729,7 @@ let rec optimize_for_loop ctx (i,pi) e1 e2 p =
 	| TNew ({ cl_path = ([],"IntIterator") },[],[i1;i2]) , _ ->
 		let max = (match i1.eexpr , i2.eexpr with
 			| TConst (TInt a), TConst (TInt b) when Int32.compare b a < 0 -> error "Range operator can't iterate backwards" p
-			| _, TConst _ | _ , TLocal _ -> None
+			| _, TConst _ -> None
 			| _ -> Some (gen_local ctx t_int)
 		) in
 		let tmp = gen_local ctx t_int in

+ 12 - 0
tests/unit/src/unit/issues/Issue4702.hx

@@ -0,0 +1,12 @@
+package unit.issues;
+
+class Issue4702 extends Test {
+	function test() {
+		var t = 5;
+		var s = "";
+		for (i in 0...t) {
+			s += "," + t--;
+		}
+		eq(",5,4,3,2,1", s);
+	}
+}