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 2026/04/21 06:13:45 UTC

(groovy) 34/34: minor refactor: copilot flagged concerns

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

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

commit f83ec905f92576f0b76b4c2415b984c07515fff4
Author: Paul King <pa...@asert.com.au>
AuthorDate: Tue Apr 21 15:35:20 2026 +1000

    minor refactor: copilot flagged concerns
---
 .../src/main/java/org/codehaus/groovy/ant/Groovydoc.java |  3 ++-
 .../org/codehaus/groovy/tools/groovydoc/Main.groovy      | 16 ++++++++++------
 .../tools/groovydoc/antlr4/GroovydocJavaVisitor.java     | 10 +++++++++-
 .../gstringTemplates/packageLevel/package-summary.html   |  6 +++---
 4 files changed, 24 insertions(+), 11 deletions(-)

diff --git a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
index caa165c600..050d0b5a82 100644
--- a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
+++ b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
@@ -287,7 +287,8 @@ public class Groovydoc extends Task {
     public void setExcludePackageNames(String packages) {
         StringTokenizer tok = new StringTokenizer(packages, ",:");
         while (tok.hasMoreTokens()) {
-            excludePackageNames.add(tok.nextToken());
+            String name = tok.nextToken().trim();
+            if (!name.isEmpty()) excludePackageNames.add(name);
         }
     }
 
diff --git a/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy b/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
index 8a6ac77878..3748370f81 100644
--- a/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
+++ b/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
@@ -122,12 +122,16 @@ class Main {
         if (options.stylesheetfile) {
             styleSheetFile = new File(options.stylesheetfile)
         }
-        if (options.addStylesheet) {
-            // CliBuilder with args:1 gives a single value; use comma separator
-            // to accept multiple paths in one flag. Example:
-            //   --add-stylesheet custom1.css,custom2.css
-            options.addStylesheet.toString().tokenize(',').each { p ->
-                addStylesheetFiles << new File(p.trim())
+        if (options.addStylesheets) {
+            // Accept both `-addStylesheet a.css -addStylesheet b.css`
+            // (repeated flag — `options.addStylesheets` plural returns every
+            // occurrence) and comma-separated forms in a single flag
+            // (e.g. `-addStylesheet a.css,b.css`). Empty tokens dropped.
+            options.addStylesheets.each { raw ->
+                String.valueOf(raw).tokenize(',').each { p ->
+                    def trimmed = p.trim()
+                    if (trimmed) addStylesheetFiles << new File(trimmed)
+                }
             }
         }
 
diff --git a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/antlr4/GroovydocJavaVisitor.java b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/antlr4/GroovydocJavaVisitor.java
index 720220bf09..9578bdaee4 100644
--- a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/antlr4/GroovydocJavaVisitor.java
+++ b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/antlr4/GroovydocJavaVisitor.java
@@ -328,7 +328,15 @@ public class GroovydocJavaVisitor
             String name = an.getNameAsString();
             if ("Internal".equals(name) || name.endsWith(".Internal")) return true;
         }
-        if (n instanceof FieldDeclaration fd && fd.getVariable(0).getNameAsString().contains("$")) return true;
+        if (n instanceof FieldDeclaration fd) {
+            // Java allows multiple variables per field declaration (`int a, b$;`).
+            // Treat the whole declaration as internal if *any* variable name
+            // contains the synthetic-name marker; picking only the first would
+            // mis-classify `int a, b$;` as non-internal.
+            for (int k = 0; k < fd.getVariables().size(); k++) {
+                if (fd.getVariable(k).getNameAsString().contains("$")) return true;
+            }
+        }
         if (n instanceof MethodDeclaration md && md.getNameAsString().contains("$")) return true;
         if (n instanceof ConstructorDeclaration cd && cd.getNameAsString().contains("$")) return true;
         return false;
diff --git a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/packageLevel/package-summary.html b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/packageLevel/package-summary.html
index 1a6a17d852..db85fd1a8a 100644
--- a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/packageLevel/package-summary.html
+++ b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/gstringTemplates/packageLevel/package-summary.html
@@ -163,9 +163,9 @@ classTypes.each { k, v ->
         <li class="navBarCell1Rev">Package</li>
         <li>Class</li>
         <li><a href="package-tree.html">Tree</a></li>
-        <% if (props.noDeprecatedList != 'true') { %><% if (props.noDeprecatedList != 'true') { %><li><a href="deprecated-list.html">Deprecated</a></li><% } %><% } %>
-        <% if (props.noIndex != 'true') { %><% if (props.noIndex != 'true') { %><li><a href="index-all.html">Index</a></li><% } %><% } %>
-        <% if (props.noHelp != 'true') { %><% if (props.noHelp != 'true') { %><li><a href="help-doc.html">Help</a></li><% } %><% } %>
+        <% if (props.noDeprecatedList != 'true') { %><li><a href="deprecated-list.html">Deprecated</a></li><% } %>
+        <% if (props.noIndex != 'true') { %><li><a href="index-all.html">Index</a></li><% } %>
+        <% if (props.noHelp != 'true') { %><li><a href="help-doc.html">Help</a></li><% } %>
     </ul>
 </div>
 <div class="subNav">