classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] Patch: RFA: fix gjdoc loop


From: Tom Tromey
Subject: [cp-patches] Patch: RFA: fix gjdoc loop
Date: 01 Jul 2005 12:49:10 -0600

This patch fixes a gjdoc bug we ran into while building Eclipse 3.1.
I'm not checking it in yet as I am not a gjdoc expert; I'd rather
someone else look it over first.

Consider this code:

package z;
/** hi jane */
public class base extends der {}

package z;
import p.base;
/** hi bob */
public class der extends base {}


Note that there is no visible 'p.base'.  If you run gjdoc on this, it
will hang, because it thinks the 'base' in z/der.java refers to
z/base.java -- which it does not.

This patch fixes the problem by changing not-found single-type imports
to return a result when match() is called.

Tom

Index: ChangeLog
from  Tom Tromey  <address@hidden>
        * src/gnu/classpath/tools/gjdoc/RootDocImpl.java
        (ResolvedImportNotFound.name): New field.
        (ResolvedImportNotFound): Initialize it.
        (ResolvedImportNotFound.match): Implemented.

Index: src/gnu/classpath/tools/gjdoc/RootDocImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/gjdoc/src/gnu/classpath/tools/gjdoc/RootDocImpl.java,v
retrieving revision 1.22
diff -u -r1.22 RootDocImpl.java
--- src/gnu/classpath/tools/gjdoc/RootDocImpl.java 18 May 2005 11:52:30 -0000 
1.22
+++ src/gnu/classpath/tools/gjdoc/RootDocImpl.java 1 Jul 2005 18:45:52 -0000
@@ -664,10 +664,18 @@
       implements ResolvedImport
    {
       private String importSpecifier;
+      private String name;
 
       ResolvedImportNotFound(String importSpecifier)
       {
          this.importSpecifier = importSpecifier;
+         int ndx = importSpecifier.lastIndexOf('.');
+         if (ndx >= 0) {
+            this.name = importSpecifier.substring(ndx + 1);
+         }
+         else {
+            this.name = importSpecifier;
+         }
       }
 
       public String toString()
@@ -677,7 +685,10 @@
 
       public String match(String name)
       {
-         return null; // FIXME!
+        if (name.equals(this.name))
+           return this.name;
+        // FIXME: note that we don't handle on-demand imports here.
+         return null;
       }
 
       public boolean mismatch(String name)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]