]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-185
authorchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Sun, 14 Apr 2013 15:58:54 +0000 (15:58 +0000)
committerchiba <chiba@30ef5769-5b8d-40dd-aea6-55b5d6557bb3>
Sun, 14 Apr 2013 15:58:54 +0000 (15:58 +0000)
git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@704 30ef5769-5b8d-40dd-aea6-55b5d6557bb3

Readme.html
javassist.jar
src/main/javassist/CtBehavior.java
src/main/javassist/bytecode/CodeAttribute.java
src/test/javassist/JvstTest4.java
src/test/test4/Lvtt.java [new file with mode: 0644]

index a123d0f5246adab9660c95494d151b7526f75ab6..25d155625b8f7d7b07ffaad16974b1fd2671772f 100644 (file)
@@ -7,7 +7,7 @@
 
 <h1>Javassist version 3</h1>
 
-<h3>Copyright (C) 1999-2012 by Shigeru Chiba, All rights reserved.</h3>
+<h3>Copyright (C) 1999-2013 by Shigeru Chiba, All rights reserved.</h3>
 
 <p><br></p>
 
@@ -283,7 +283,7 @@ see javassist.Dump.
 
 <p>-version 3.18
 <ul>
-JIRA JASSIST-183, 184, 189, 162, 186, 190.
+JIRA JASSIST-183, 184, 189, 162, 185, 186, 190.
 </ul>
 
 <p>-version 3.17.1 on December 3, 2012
index 8ff2f083bf755b15aaa4201954d079fcef46dd92..784fab0e58da044279da9be5bfb5f2b07b387a38 100644 (file)
Binary files a/javassist.jar and b/javassist.jar differ
index 73ac277a321c338ce67d706ef2282368b7a4313c..9251315914330bec91b704480f37830cfbd76708 100644 (file)
@@ -656,11 +656,15 @@ public abstract class CtBehavior extends CtMember {
 
             ca.insertLocalVar(where, size);
             LocalVariableAttribute va
-                            = (LocalVariableAttribute)
-                              ca.getAttribute(LocalVariableAttribute.tag);
+                = (LocalVariableAttribute)ca.getAttribute(LocalVariableAttribute.tag);
             if (va != null)
                 va.shiftIndex(where, size);
 
+            LocalVariableTypeAttribute lvta
+                = (LocalVariableTypeAttribute)ca.getAttribute(LocalVariableTypeAttribute.tag);
+            if (lvta != null)
+                lvta.shiftIndex(where, size);
+
             StackMapTable smt = (StackMapTable)ca.getAttribute(StackMapTable.tag);
             if (smt != null)
                 smt.insertLocal(where, StackMapTable.typeTagOf(typeDesc), classInfo);
index dbf714e7c19bac0d4dcb56486aa3b3e8e6700835..090ae74df009bd04d4f1e5d5e1cf53059cfa1d4f 100644 (file)
@@ -465,6 +465,7 @@ public class CodeAttribute extends AttributeInfo implements Opcode {
      * Changes the index numbers of the local variables
      * to append a new parameter.
      * This method does not update <code>LocalVariableAttribute</code>,
+     * <code>LocalVariableTypeAttribute</code>,
      * <code>StackMapTable</code>, or <code>StackMap</code>.
      * These attributes must be explicitly updated.
      *
@@ -472,6 +473,7 @@ public class CodeAttribute extends AttributeInfo implements Opcode {
      * @param size         the type size of the new parameter (1 or 2).
      *
      * @see LocalVariableAttribute#shiftIndex(int, int)
+     * @see LocalVariableTypeAttribute#shiftIndex(int, int)
      * @see StackMapTable#insertLocal(int, int, int)
      * @see StackMap#insertLocal(int, int, int)
      */
index 7692d5bcb30fc71509d723ba5b4178bba8d6ee26..619b9e973ee6701d80c89e3df1585503db8de4ed 100644 (file)
@@ -838,4 +838,12 @@ public class JvstTest4 extends JvstTestRoot {
         Object obj = make(cc.getName());
         assertEquals(12, invoke(obj, "test1"));
     }
+
+    public void testLocalVariableTypeTable() throws Exception {
+        CtClass cc = sloader.get("test4.Lvtt");
+        CtMethod m = cc.getDeclaredMethod("run");
+        m.addParameter(CtClass.intType);
+        cc.writeFile();
+        Object obj = make(cc.getName());
+    }
 }
diff --git a/src/test/test4/Lvtt.java b/src/test/test4/Lvtt.java
new file mode 100644 (file)
index 0000000..b9d72c5
--- /dev/null
@@ -0,0 +1,11 @@
+package test4;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Lvtt {
+    public void run() {
+        List<String> s = new ArrayList<String>();
+        System.out.println(s);
+      }
+}