You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2026/04/22 11:52:00 UTC
[jira] [Commented] (GROOVY-11954) groovydoc: short-name type resolution cache makes doc output order-dependent and non-reproducible
[ https://issues.apache.org/jira/browse/GROOVY-11954?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18075432#comment-18075432 ]
ASF GitHub Bot commented on GROOVY-11954:
-----------------------------------------
paulk-asert opened a new pull request, #2484:
URL: https://github.com/apache/groovy/pull/2484
…utput order-dependent and non-reproducible
> groovydoc: short-name type resolution cache makes doc output order-dependent and non-reproducible
> -------------------------------------------------------------------------------------------------
>
> Key: GROOVY-11954
> URL: https://issues.apache.org/jira/browse/GROOVY-11954
> Project: Groovy
> Issue Type: Bug
> Components: groovy-groovydoc
> Reporter: Mattias Reichel
> Priority: Minor
>
> There are reproducibility problems for javadoc jars in the Grails project. Some of these issues have been fixed previously Groovy 4. However this issue still lingers when I verify Grails releases and I have seen that at least some of the problems are that {{java.util.Date}} and {{java.sql.Date}} are ordered differently across different builds.
> Problem description below generated with the help of GPT-5.4. It has also generated tests and a fix that can be put in a PR if desired.
> {{groovy-groovydoc}} can produce non-reproducible output when resolving ambiguous short type names such as {{{}Date{}}}.
> h3. Problem
> During Groovydoc generation, short type names are resolved in a class-specific context using that class’s imports, aliases, package, and nested types.
> However, {{SimpleGroovyClassDoc.resolveClass(...)}} uses the root-level cache from {{SimpleGroovyRootDoc.getResolvedClasses()}} keyed only by the requested name.
> This is incorrect for short names like {{{}Date{}}}, because the same short name may resolve differently in different classes, e.g.:
> * {{java.util.Date}}
> * {{java.sql.Date}}
> As a result, whichever class resolves Date first can populate the shared cache and affect later resolutions in other classes. This makes the generated documentation depend on source processing order and can lead to non-reproducible Javadoc/Groovydoc JARs.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)