git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@633 30ef5769-5b8d-40dd-aea6-55b5d6557bb3tags/rel_3_17_1_ga
@@ -283,7 +283,8 @@ see javassist.Dump. | |||
<p>-version 3.17 | |||
<ul> | |||
<li>JIRA JASSIST-168. | |||
<li>OSGi bundle info is now included in the jar file. | |||
<li>JIRA JASSIST-166, 168 have been fixed. | |||
</ul> | |||
<p>-version 3.16.1 on March 6, 2012 |
@@ -899,6 +899,9 @@ public class TypeChecker extends Visitor implements Opcode, TokenId { | |||
public void atArrayLength(Expr expr) throws CompileError { | |||
expr.oprand1().accept(this); | |||
if (arrayDim == 0) | |||
throw new NoFieldException("length", expr); | |||
exprType = INT; | |||
arrayDim = 0; | |||
} |
@@ -711,4 +711,17 @@ public class JvstTest4 extends JvstTestRoot { | |||
assertTrue(javassist.runtime.Desc.getClazz("[Ljava.lang.String;") != null); | |||
javassist.runtime.Desc.useContextClassLoader = old; | |||
} | |||
public void testJIRA166() throws Exception { | |||
CtClass cc = sloader.get("test4.JIRA166"); | |||
cc.instrument(new ExprEditor() { | |||
public void edit(FieldAccess fa) throws CannotCompileException { | |||
if (fa.isReader() && fa.getFieldName().equals("length")) | |||
fa.replace("length = self().length + \"!\"; $_ = ($r) this.length.substring(1);"); | |||
} | |||
}); | |||
cc.writeFile(); | |||
Object obj = make(cc.getName()); | |||
assertEquals(1, invoke(obj, "run")); | |||
} | |||
} |
@@ -0,0 +1,12 @@ | |||
package test4; | |||
public class JIRA166 { | |||
String length = "jira166"; | |||
JIRA166 self() { return this; } | |||
void print() { System.out.println(length); } | |||
public int run() { | |||
print(); | |||
System.out.println(length); | |||
return 1; | |||
} | |||
} |