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

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


The following commit(s) were added to refs/heads/master by this push:
     new 4090a96f4e Trivial refactor: simplify code with `String.repeat()`
4090a96f4e is described below

commit 4090a96f4ec0f9859ec8139bc5ab77bb49f7a86f
Author: Daniel Sun <sun...@apache.org>
AuthorDate: Sat Jun 14 23:55:06 2025 +0900

    Trivial refactor: simplify code with `String.repeat()`
---
 src/main/java/groovy/lang/TracingInterceptor.java        |  6 +-----
 .../java/org/apache/groovy/ast/tools/ClassNodeUtils.java |  4 +---
 .../org/codehaus/groovy/classgen/asm/CallSiteWriter.java |  4 +---
 .../org/codehaus/groovy/runtime/StringGroovyMethods.java | 13 +++----------
 .../groovy/runtime/callsite/CallSiteGenerator.java       |  5 ++---
 src/main/java/org/codehaus/groovy/tools/Utilities.java   | 16 ++++------------
 .../main/groovy/groovy/console/ui/text/GroovyFilter.java |  4 +---
 .../console/ui/text/StructuredSyntaxDocumentFilter.java  |  4 +---
 .../src/main/java/groovy/test/GroovyAssert.java          |  2 +-
 9 files changed, 15 insertions(+), 43 deletions(-)

diff --git a/src/main/java/groovy/lang/TracingInterceptor.java 
b/src/main/java/groovy/lang/TracingInterceptor.java
index 6bcb62b76e..e4a266ae34 100644
--- a/src/main/java/groovy/lang/TracingInterceptor.java
+++ b/src/main/java/groovy/lang/TracingInterceptor.java
@@ -87,11 +87,7 @@ public class TracingInterceptor implements Interceptor {
         return true;
     }
     private String indent(){
-        StringBuilder result = new StringBuilder();
-        for (int i=0; i<indent;i++){
-            result.append("  ");
-        }
-        return result.toString();
+        return "  ".repeat(Math.max(0, indent));
     }
 
     protected void write(Object object, String methodName, Object[] arguments, 
final String origin) {
diff --git a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java 
b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
index e91bc8f651..b16fae4603 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
@@ -83,9 +83,7 @@ public class ClassNodeUtils {
             }
             StringBuilder sb = new StringBuilder(cn.getName().length() + (2 * 
dim));
             sb.append(formatTypeName(cn));
-            for (int i = 0; i < dim; i += 1) {
-                sb.append("[]");
-            }
+            sb.append("[]".repeat(dim));
             return sb.toString();
         }
         return cNode.isGenericsPlaceHolder() ? cNode.getUnresolvedName() : 
cNode.getName();
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java 
b/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
index 374ee9ee5f..1ebf8d495a 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/CallSiteWriter.java
@@ -78,9 +78,7 @@ public class CallSiteWriter {
         }
         if (sig[numberOfArguments] == null) {
             StringBuilder sb = new StringBuilder("(");
-            for (int i = 0; i != numberOfArguments; ++i) {
-                sb.append("Ljava/lang/Object;");
-            }
+            sb.append("Ljava/lang/Object;".repeat(numberOfArguments));
             sb.append(")[Ljava/lang/Object;");
             sig[numberOfArguments] = sb.toString();
         }
diff --git a/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java 
b/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
index 419f61deac..1df73c29ad 100644
--- a/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/StringGroovyMethods.java
@@ -1940,16 +1940,9 @@ public class StringGroovyMethods extends 
DefaultGroovyMethodsSupport {
      */
     public static String multiply(final CharSequence self, final Number 
factor) {
         int size = factor.intValue();
-        if (size == 0)
-            return "";
-        else if (size < 0) {
-            throw new IllegalArgumentException("multiply() should be called 
with a number of 0 or greater not: " + size);
-        }
-        StringBuilder answer = new StringBuilder(self);
-        for (int i = 1; i < size; i++) {
-            answer.append(self);
-        }
-        return answer.toString();
+        if (size == 0) return "";
+        if (size < 0) throw new IllegalArgumentException("multiply() should be 
called with a number of 0 or greater not: " + size);
+        return String.valueOf(self).repeat(size);
     }
 
     /**
diff --git 
a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java 
b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
index 4b9aac7654..2dc9f45fd6 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/CallSiteGenerator.java
@@ -123,11 +123,10 @@ public class CallSiteGenerator {
     public static void genCallWithFixedParams(ClassWriter cw, String name, 
final String superClass, CachedMethod cachedMethod, String receiverType ) {
         if (cachedMethod.getParamsCount() > 4) return;
 
-        StringBuilder pdescb = new StringBuilder();
         final int pc = cachedMethod.getParamsCount();
-        for (int i = 0; i != pc; ++i) pdescb.append("Ljava/lang/Object;");
+        final String pdescb = "Ljava/lang/Object;".repeat(pc);
 
-        
writeMethod(cw,name,pc+2,superClass,cachedMethod,receiverType,pdescb.toString(),false);
+        writeMethod(cw, name, pc + 2, superClass, cachedMethod, receiverType, 
pdescb, false);
     }
 
     public static void genCallXxxWithArray(ClassWriter cw, final String name, 
final String superClass, CachedMethod cachedMethod, String receiverType) {
diff --git a/src/main/java/org/codehaus/groovy/tools/Utilities.java 
b/src/main/java/org/codehaus/groovy/tools/Utilities.java
index b749d2bccb..1e6e7dad1b 100644
--- a/src/main/java/org/codehaus/groovy/tools/Utilities.java
+++ b/src/main/java/org/codehaus/groovy/tools/Utilities.java
@@ -18,6 +18,8 @@
  */
 package org.codehaus.groovy.tools;
 
+import org.codehaus.groovy.runtime.StringGroovyMethods;
+
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
@@ -37,23 +39,13 @@ public abstract class Utilities
    /**
     *  Returns a string made up of repetitions of the specified string.
     */
-
-    public static String repeatString( String pattern, int repeats )
-    {
-        StringBuilder buffer = new StringBuilder( pattern.length() * repeats );
-        for( int i = 0; i < repeats; i++ )
-        {
-            buffer.append( pattern );
-        }
-
-        return new String( buffer );
+    public static String repeatString(String pattern, int repeats) {
+        return StringGroovyMethods.multiply(pattern, repeats);
     }
 
-
    /**
     *  Returns the end-of-line marker.
     */
-
     public static String eol()
     {
         return eol;
diff --git 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/GroovyFilter.java
 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/GroovyFilter.java
index fbe1e849ce..1c9140dfb2 100644
--- 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/GroovyFilter.java
+++ 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/GroovyFilter.java
@@ -220,9 +220,7 @@ public class GroovyFilter extends 
StructuredSyntaxDocumentFilter {
                 buffer.delete(0, buffer.length());
                 buffer.append('\n');
                 if (index > -1) {
-                    for (int i = 0; i < index + 4; i++) {
-                        buffer.append(' ');
-                    }
+                    buffer.append(" ".repeat(index + 4));
                 }
                 try {
                     doc.insertString(offset, buffer.toString(),
diff --git 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/StructuredSyntaxDocumentFilter.java
 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/StructuredSyntaxDocumentFilter.java
index 8438aa7625..a9511805a6 100644
--- 
a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/StructuredSyntaxDocumentFilter.java
+++ 
b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/text/StructuredSyntaxDocumentFilter.java
@@ -69,9 +69,7 @@ public class StructuredSyntaxDocumentFilter extends 
DocumentFilter {
         int checked = checking.indexOf('(');
         if (checked > -1) {
             StringBuilder msg = new StringBuilder("Only non-capturing groups 
allowed:\r\n" + regexp + "\r\n");
-            for (int i = 0; i < checked; i++) {
-                msg.append(" ");
-            }
+            msg.append(" ".repeat(checked));
             msg.append("^");
             throw new IllegalArgumentException(msg.toString());
         }
diff --git 
a/subprojects/groovy-test/src/main/java/groovy/test/GroovyAssert.java 
b/subprojects/groovy-test/src/main/java/groovy/test/GroovyAssert.java
index 3795683efe..d72b17b176 100644
--- a/subprojects/groovy-test/src/main/java/groovy/test/GroovyAssert.java
+++ b/subprojects/groovy-test/src/main/java/groovy/test/GroovyAssert.java
@@ -301,7 +301,7 @@ public class GroovyAssert {
         int level = 0;
         while (th != null) {
             if (level > 1) {
-                for (int i = 0; i < level - 1; i++) sb.append("   ");
+                sb.append("   ".repeat(level - 1));
             }
             if (level > 0) sb.append("-> ");
             if (level > MAX_NESTED_EXCEPTIONS) {

Reply via email to