Просмотр исходного кода

[java] do/while(false) is not dead code. Closes #2271

Cauê Waneck 11 лет назад
Родитель
Сommit
bb77a7c657
3 измененных файлов с 23 добавлено и 8 удалено
  1. 3 3
      gencommon.ml
  2. 5 5
      tests/unit/issues/Issue2254.hx
  3. 15 0
      tests/unit/issues/Issue2271.hx

+ 3 - 3
gencommon.ml

@@ -9608,11 +9608,11 @@ struct
 
           let block, k = process_expr block in
           if java_mode then
-            match get_constant_expr cond, !has_break with
-              | Some (TBool true), false ->
+            match get_constant_expr cond, flag, !has_break with
+              | Some (TBool true), _, false ->
                 has_break := last_has_break;
                 { expr with eexpr = TWhile(cond, block, flag) }, BreaksFunction
-              | Some (TBool false), _ ->
+              | Some (TBool false), NormalWhile, _ ->
                 has_break := last_has_break;
                 do_warn expr.epos;
                 null expr.etype expr.epos, Normal

+ 5 - 5
tests/unit/issues/Issue2254.hx

@@ -4,10 +4,10 @@ import haxe.Template;
 
 class Issue2254 extends Test {
 	function test()
-  {
-    var str = 'HI, IT IS ::if !isIt::NOT::end::';
-    var t = new haxe.Template(str);
-    eq("HI, IT IS ", t.execute({ isIt:true }));
-    eq("HI, IT IS NOT", t.execute({ isIt:false }));
+	{
+		var str = 'HI, IT IS ::if !isIt::NOT::end::';
+		var t = new haxe.Template(str);
+		eq("HI, IT IS ", t.execute({ isIt:true }));
+		eq("HI, IT IS NOT", t.execute({ isIt:false }));
 	}
 }

+ 15 - 0
tests/unit/issues/Issue2271.hx

@@ -0,0 +1,15 @@
+package unit.issues;
+import unit.Test;
+
+class Issue2271 extends Test
+{
+	function test()
+	{
+		var changed = false;
+		do
+		{
+			changed = true;
+		} while(false);
+		t(changed);
+	}
+}