diff options
author | chibash <chiba@javassist.org> | 2014-11-18 15:43:31 +0900 |
---|---|---|
committer | chibash <chiba@javassist.org> | 2014-11-18 15:43:31 +0900 |
commit | a0f4d935a20ffeefcfe4c66730ec702b7fff0928 (patch) | |
tree | 397f4fda3ebba38bc3c83bb29f087a8caf5b4ab2 /src/test | |
parent | c988383c3921bfd26139c54d6ad4e8f95c48fa0f (diff) | |
download | javassist-a0f4d935a20ffeefcfe4c66730ec702b7fff0928.tar.gz javassist-a0f4d935a20ffeefcfe4c66730ec702b7fff0928.zip |
fixed JASSIST-235. Now CtClass.getEnclosingMethod() is deprecated due to its potential bug.
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/Test.java | 6 | ||||
-rw-r--r-- | src/test/javassist/JvstTest2.java | 11 | ||||
-rw-r--r-- | src/test/test2/Anon.java | 11 |
3 files changed, 26 insertions, 2 deletions
diff --git a/src/test/Test.java b/src/test/Test.java index 83fe2954..a6d31c68 100644 --- a/src/test/Test.java +++ b/src/test/Test.java @@ -8,7 +8,9 @@ public class Test { } ClassPool cp = ClassPool.getDefault(); - CtClass str = cp.get("java.lang.String"); + CtClass inner3 = cp.get("test2.Anon$Anon2.1"); + CtBehavior ct = inner3.getEnclosingBehavior(); +/* CtClass str = cp.get("java.lang.String"); CtClass cc = cp.get("Test"); cc.getClassFile().setMajorVersion(javassist.bytecode.ClassFile.JAVA_4); CtMethod m = cc.getDeclaredMethod("bar"); @@ -16,7 +18,7 @@ public class Test { m.insertAfter(" dismiss( aVar );" , true); cc.getClassFile().setMajorVersion(javassist.bytecode.ClassFile.JAVA_7); m.insertBefore("aVar = initVar();"); - cc.writeFile(); + cc.writeFile();*/ } public void bar(int i) { foo(i); } diff --git a/src/test/javassist/JvstTest2.java b/src/test/javassist/JvstTest2.java index ad039c8c..411c1e97 100644 --- a/src/test/javassist/JvstTest2.java +++ b/src/test/javassist/JvstTest2.java @@ -523,6 +523,17 @@ public class JvstTest2 extends JvstTestRoot { assertEquals(out, inner.getEnclosingMethod().getDeclaringClass()); } + + assertNull(out.getEnclosingMethod()); + assertNull(out.getEnclosingBehavior()); + + CtClass inner2 = sloader.get("test2.Anon$Anon2$1"); + assertTrue(inner2.getEnclosingBehavior() instanceof CtConstructor); + assertEquals(sloader.get("test2.Anon$Anon2"), inner2.getEnclosingBehavior().getDeclaringClass()); + CtClass inner3 = sloader.get("test2.Anon$Anon3$1"); + assertTrue(inner3.getEnclosingBehavior() instanceof CtConstructor); + assertTrue(((CtConstructor)inner3.getEnclosingBehavior()).isClassInitializer()); + assertEquals(sloader.get("test2.Anon$Anon3"), inner3.getEnclosingBehavior().getDeclaringClass()); } public void testMethodInInner() throws Exception { diff --git a/src/test/test2/Anon.java b/src/test/test2/Anon.java index a6ccd8f0..56223436 100644 --- a/src/test/test2/Anon.java +++ b/src/test/test2/Anon.java @@ -4,4 +4,15 @@ public class Anon { public Object make() {
return new Object() { int k; };
}
+
+ public static class Anon2 {
+ Object obj;
+ public Anon2() {
+ obj = new Object() { int k; };
+ }
+ }
+
+ public static class Anon3 {
+ public static Object sobj = new Object() { int p; };
+ }
}
|