Browse Source

fixed JASSIST-166

git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@633 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
chiba 12 years ago
parent
commit
e75c12e096

+ 2
- 1
Readme.html View File

@@ -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

+ 3
- 0
src/main/javassist/compiler/TypeChecker.java View File

@@ -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;
}

+ 13
- 0
src/test/javassist/JvstTest4.java View File

@@ -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"));
}
}

+ 12
- 0
src/test/test4/JIRA166.java View File

@@ -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;
}
}

Loading…
Cancel
Save