]> source.dussan.org Git - javassist.git/commitdiff
fixed JASSIST-188
authorchibash <chiba@javassist.org>
Thu, 30 May 2013 06:49:35 +0000 (15:49 +0900)
committerchibash <chiba@javassist.org>
Thu, 30 May 2013 06:49:35 +0000 (15:49 +0900)
Readme.html
src/main/javassist/ClassPool.java
src/main/javassist/compiler/MemberResolver.java
src/test/javassist/JvstTest4.java

index f6936b0dd5b5661afa8eb1bff3c9f2e5e804ca73..b11961e289e3d5dea2e1c5022fd97af2c584d8bc 100644 (file)
@@ -285,7 +285,7 @@ see javassist.Dump.
 <ul>
 <li>The source code repository has been moved to <a href="https://github.com/jboss-javassist/javassist">GitHub</a></li>.
 
-<li>JIRA JASSIST-181, 183, 184, 189, 162, 185, 186, 190, 199.
+<li>JIRA JASSIST-181, 183, 184, 189, 162, 185, 186, 188, 190, 195, 199, 201.
 </ul>
 
 <p>-version 3.17.1 on December 3, 2012
index 2c467fb250094c173cfc30f707886043d80bd168..4804b5932b898432e87c6e91040588e86c38999c 100644 (file)
@@ -936,7 +936,7 @@ public class ClassPool {
     /**
      * Detatches the <code>ClassPath</code> object from the search path.
      * The detached <code>ClassPath</code> object cannot be added
-     * to the pathagain.
+     * to the path again.
      */
     public void removeClassPath(ClassPath cp) {
         source.removeClassPath(cp);
index 4ab304fe6afdf8f8cf4c881be3748393fd39e894..f304b034b83643d73144385b237a800b627ab5bd 100644 (file)
@@ -399,7 +399,10 @@ public class MemberResolver implements TokenId {
         if (found == INVALID)
             throw new CompileError("no such class: " + name);
         else if (found != null)
-            return (CtClass)found;
+            try {
+                return classPool.get((String)found);
+            }
+            catch (NotFoundException e) {}
 
         CtClass cc = null;
         try {
@@ -409,7 +412,7 @@ public class MemberResolver implements TokenId {
             cc = searchImports(name);
         }
 
-        cache.put(name, cc);
+        cache.put(name, cc.getName());
         return cc;
     }
 
index c7582c34b7cecedd7b3afb86f5759415b00c3a07..8bcbf01c7362deaabf25f1a3b566a405630a4f04 100644 (file)
@@ -875,4 +875,24 @@ public class JvstTest4 extends JvstTestRoot {
         Object obj = make(cc.getName());
         assertEquals(4, invoke(obj, "run"));        
     }
+
+    public void testJIRA188() throws Exception {
+        CtClass cc = sloader.makeClass("test4.JIRA188");
+        CtField f = new CtField(CtClass.intType, "f", cc);
+        f.setModifiers(Modifier.PRIVATE);
+        cc.addField(f);
+        cc.addMethod(CtNewMethod.make(
+                "public int getf(test4.JIRA188 p){ return p.f; }", cc));
+        cc.detach();
+        // System.gc();
+        try {
+            cc = sloader.get("test4.JIRA188");
+            fail("test4.JIRA188 found");
+        }
+        catch (NotFoundException e) {}
+        cc = sloader.makeClass("test4.JIRA188");
+        cc.addField(new CtField(CtClass.intType, "g", cc));
+        cc.addMethod(CtNewMethod.make(
+                "public int getf(test4.JIRA188 p){ return p.g; }", cc));
+    }
 }