]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-211
authorchibash <chiba@javassist.org>
Mon, 2 Dec 2013 11:05:24 +0000 (20:05 +0900)
committerchibash <chiba@javassist.org>
Mon, 2 Dec 2013 11:05:24 +0000 (20:05 +0900)
Readme.html
src/main/javassist/compiler/CodeGen.java
src/test/javassist/JvstTest4.java

index 290d20972530fc61c28572d052570029328a30be..4c5288beb999e0399d918db8fb123d4028d17990 100644 (file)
@@ -283,7 +283,7 @@ see javassist.Dump.
 
 <p>-version 3.19
 <ul>
-<li>JIRA JASSIST-158, 205, 206, 207, 212, 216.
+<li>JIRA JASSIST-158, 205, 206, 207, 211, 212, 216.
 </ul>
 </p>
 
index bf61a2b1f287e945aea04024b805e506aaba722b..bbcce89592293fe0d45df529776c851cca8ff930 100644 (file)
@@ -434,7 +434,7 @@ public abstract class CodeGen extends Visitor implements Opcode, TokenId {
         if (notDo)
             bytecode.write16bit(pc, pc3 - pc + 1);
 
-        boolean alwaysBranch = compileBooleanExpr(true, expr);
+        boolean alwaysBranch = compileBooleanExpr(true, expr) && breakList.size() == 0;
         bytecode.addIndex(pc2 - bytecode.currentPc() + 1);
 
         patchGoto(breakList, bytecode.currentPc());
index df4533bbfebbe2a6b9af15ecb7ef131d58237fcd..f1aca09e938667fde90c32748dce1f7110452f2d 100644 (file)
@@ -938,4 +938,22 @@ public class JvstTest4 extends JvstTestRoot {
         cc.writeFile();
         Object obj = make(cc.getName());
     }
+
+    public void testWhileTrueKO() throws Exception {
+        final ClassPool pool = ClassPool.getDefault();
+        final CtClass cc = pool.makeClass("test4.TestWhileTrueKO");
+        String source = "public void testWhile() { while(true) { break; } }";
+        cc.addMethod(CtMethod.make(source, cc));
+        cc.writeFile();
+        make(cc.getName());
+    }
+
+    public void testWhileTrueOK() throws Exception {
+        final ClassPool pool = ClassPool.getDefault();
+        final CtClass cc = pool.makeClass("test4.TestWhileTrueOK");
+        String source = "public void testWhile() { while(0==0) { break; }}";
+        cc.addMethod(CtMethod.make(source, cc));
+        cc.writeFile();
+        make(cc.getName());
+    }
 }