diff options
author | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2003-08-17 13:59:49 +0000 |
---|---|---|
committer | chiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3> | 2003-08-17 13:59:49 +0000 |
commit | 421e4885eb233dc616bed0b48eec678f5f0d41c4 (patch) | |
tree | 7d5987c44f9c5cbd4e1a6821e3a068f5fc76afca /src/main/javassist/compiler/MemberCodeGen.java | |
parent | d96924c601912c7df55e378806a126850a798eaa (diff) | |
download | javassist-421e4885eb233dc616bed0b48eec678f5f0d41c4.tar.gz javassist-421e4885eb233dc616bed0b48eec678f5f0d41c4.zip |
fixed a bug in the compiler, which could not compile a try statement
correctly.
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@33 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
Diffstat (limited to 'src/main/javassist/compiler/MemberCodeGen.java')
-rw-r--r-- | src/main/javassist/compiler/MemberCodeGen.java | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/main/javassist/compiler/MemberCodeGen.java b/src/main/javassist/compiler/MemberCodeGen.java index 97a12341..612b6641 100644 --- a/src/main/javassist/compiler/MemberCodeGen.java +++ b/src/main/javassist/compiler/MemberCodeGen.java @@ -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()); |