You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/01/12 08:25:41 UTC

[groovy] 03/03: GROOVY-8296: Groovydoc Recognition exception with Java 8 class (improve name resolving)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 0c37a8a992ba9ef3b17b79c82e7df4f55e9b4c94
Author: Paul King <pa...@asert.com.au>
AuthorDate: Sun Jan 12 18:25:06 2020 +1000

    GROOVY-8296: Groovydoc Recognition exception with Java 8 class (improve name resolving)
---
 .../codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
index ff1221c..140e4d2 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/SimpleGroovyClassDoc.java
@@ -588,6 +588,8 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
             if (slashIndex < 1) {
                 doc = resolveInternalClassDocFromImport(rootDoc, name);
                 if (doc != null) return doc;
+                doc = resolveInternalClassDocFromSamePackage(rootDoc, name);
+                if (doc != null) return doc;
                 for (GroovyClassDoc nestedDoc : nested) {
                     if (nestedDoc.name().endsWith("." + name))
                         return nestedDoc;
@@ -680,6 +682,15 @@ public class SimpleGroovyClassDoc extends SimpleGroovyAbstractableElementDoc imp
         return null;
     }
 
+    private GroovyClassDoc resolveInternalClassDocFromSamePackage(GroovyRootDoc rootDoc, String baseName) {
+        if (isPrimitiveType(baseName)) return null;
+        if (baseName.contains(".")) return null;
+        int lastSlash = fullPathName.lastIndexOf("/");
+        if (lastSlash < 0) return null;
+        String pkg = fullPathName.substring(0, lastSlash + 1);
+        return ((SimpleGroovyRootDoc)rootDoc).classNamedExact(pkg + baseName);
+    }
+
     private Class resolveExternalClassFromImport(String name) {
         if (isPrimitiveType(name)) return null;
         Class<?> clazz = resolvedExternalClassesCache.get(name);