<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>
<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
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);
* 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.
*
* @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)
*/
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());
+ }
}
--- /dev/null
+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);
+ }
+}