]> source.dussan.org Git - javassist.git/commitdiff
fixed a bug in the compiler, which could not compile a try statement
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Sun, 17 Aug 2003 13:59:49 +0000 (13:59 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Sun, 17 Aug 2003 13:59:49 +0000 (13:59 +0000)
correctly.

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@33 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

Readme.html
src/main/javassist/ClassPool.java
src/main/javassist/compiler/MemberCodeGen.java

index 9aaf4bae1d20e511f18ead94e6cbee5078175157..9ca4eb517d21e01fb2c4a364565560e8d9f17e49 100644 (file)
@@ -244,6 +244,7 @@ see javassist.Dump.
   <li>javassist.expr.Expr.indexOfBytecode() has been added.
   <li>javassist.Loader has been modified so that getPackage() returns
       a package object.
+  <li>Now, the compiler can correctly compile a try statement.
 </ul>
 
 <p>- version 2.5.1 in May, 2003.
@@ -505,8 +506,8 @@ Marc Segura-Devillechaise, Jan Baudisch, Julien Blass, Yoshiki Sato,
 Fabian Crabus, Bo Norregaard Jorgensen, Bob Lee, Bill Burke,
 Remy Sanlaville, Muga Nishizawa, Alexey Loubyansky, Saori Oki,
 Andreas Salathe, Dante Torres estrada, S. Pam, Nuno Santos,
-Denis Taye, Colin Sampaleanu, Robert Bialek, and Asato Shimotaki
-for their contributions.
+Denis Taye, Colin Sampaleanu, Robert Bialek, Asato Shimotaki,
+and Howard Lewis Ship for their contributions.
 
 <p><br>
 
index 07a442efa281f343c771b554d90b8e9549b6e117..e07826f7b411c2abc237cc965d4ef12bf813e727 100644 (file)
@@ -372,9 +372,9 @@ public class ClassPool {
 
     /**
      * Returns a <code>java.lang.Class</code> object that has been loaded
-     * by <code>writeAsClass()</code>.  Note that such an object cannot be
+     * by <code>writeAsClass()</code>.  That object cannot be
      * obtained by <code>java.lang.Class.forName()</code> because it has
-     * been loaded by an internal class loader.
+     * been loaded by an internal class loader of Javassist.
      *
      * @see #writeAsClass(String)
      * @see javassist.CtClass#toClass()
index 97a123410fe694810b400a4e8aa8f585f4ba7411..612b66416a6340abdf060929ff8b834e2b9ca3ad 100644 (file)
@@ -72,6 +72,8 @@ public class MemberCodeGen extends CodeGen {
         int start = bytecode.currentPc();
         body.accept(this);
         int end = bytecode.currentPc();
+        if (start == end)
+            throw new CompileError("empty try block");
 
         bytecode.addOpcode(Opcode.GOTO);
         int pc = bytecode.currentPc();
@@ -92,10 +94,10 @@ public class MemberCodeGen extends CodeGen {
             decl.setClassName(javaToJvmName(type.getName()));
             bytecode.addExceptionHandler(start, end, bytecode.currentPc(),
                                          type);
-            if (block != null) {
-                bytecode.addAstore(var);
+            bytecode.growStack(1);
+            bytecode.addAstore(var);
+            if (block != null)
                 block.accept(this);
-            }
 
             bytecode.addOpcode(Opcode.GOTO);
             bytecode.addIndex(pc - bytecode.currentPc());