aboutsummaryrefslogtreecommitdiff
path: root/src/test/java/org/apache/bcel
diff options
context:
space:
mode:
authorGary D. Gregory <ggregory@apache.org>2017-10-16 20:32:13 +0000
committerGary D. Gregory <ggregory@apache.org>2017-10-16 20:32:13 +0000
commit0d33e877b1642b1bb630415304b8d01de2ce427e (patch)
tree1fc26ac758bf154159c1dfd995b91175613e1fc7 /src/test/java/org/apache/bcel
parent90e94269f7d64684ac7dc3fcbee055eea866d370 (diff)
downloadapache-commons-bcel-0d33e877b1642b1bb630415304b8d01de2ce427e.tar.gz
[BCEL-295] Fix local variable live range length; add test case.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/bcel/trunk@1812323 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/test/java/org/apache/bcel')
-rw-r--r--src/test/java/org/apache/bcel/PLSETestCase.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/test/java/org/apache/bcel/PLSETestCase.java b/src/test/java/org/apache/bcel/PLSETestCase.java
index f3c00e23..71f01fb9 100644
--- a/src/test/java/org/apache/bcel/PLSETestCase.java
+++ b/src/test/java/org/apache/bcel/PLSETestCase.java
@@ -18,7 +18,9 @@
package org.apache.bcel;
+import org.apache.bcel.classfile.ClassParser;
import org.apache.bcel.classfile.JavaClass;
+import org.apache.bcel.classfile.LocalVariable;
import org.apache.bcel.classfile.LocalVariableTable;
import org.apache.bcel.classfile.Method;
import org.apache.bcel.generic.ClassGen;
@@ -28,6 +30,7 @@ import org.apache.bcel.generic.InstructionList;
import org.apache.bcel.generic.InvokeInstruction;
import org.apache.bcel.generic.MethodGen;
import org.apache.bcel.generic.Type;
+import java.io.FileInputStream;
public class PLSETestCase extends AbstractTestCase
{
@@ -86,4 +89,23 @@ public class PLSETestCase extends AbstractTestCase
final String cn = ii.getClassName(pool);
assertEquals("[Lorg.apache.bcel.data.PLSETestEnum;", cn);
}
+
+ /**
+ * BCEL-295:
+ */
+ public void testB295() throws Exception
+ {
+ final JavaClass clazz = getTestClass(PACKAGE_BASE_NAME+".data.PLSETestClass2");
+ final ClassGen cg = new ClassGen(clazz);
+ final ConstantPoolGen pool = cg.getConstantPool();
+ final Method m = cg.getMethodAt(1); // 'main'
+ final LocalVariableTable lvt = m.getLocalVariableTable();
+ final LocalVariable lv = lvt.getLocalVariable(2, 4); // 'i'
+ //System.out.println(lv);
+ final MethodGen mg = new MethodGen(m, cg.getClassName(), pool);
+ final LocalVariableTable new_lvt = mg.getLocalVariableTable(mg.getConstantPool());
+ final LocalVariable new_lv = new_lvt.getLocalVariable(2, 4); // 'i'
+ //System.out.println(new_lv);
+ assertEquals("live range length", lv.getLength(), new_lv.getLength());
+ }
}