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

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

commit 0e07e7faaa1e14397c5f1541fcdee7c2cf83339b
Author: Paul King <[email protected]>
AuthorDate: Mon Aug 4 13:28:52 2025 +1000

    GROOVY-8162: Update Groovysh to JLine3 (retain ordering of fragments)
---
 .../org/apache/groovy/groovysh/jline/GroovyEngine.java   | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git 
a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyEngine.java
 
b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyEngine.java
index 7aeda02138..c9ce985fc4 100644
--- 
a/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyEngine.java
+++ 
b/subprojects/groovy-groovysh/src/main/groovy/org/apache/groovy/groovysh/jline/GroovyEngine.java
@@ -69,9 +69,11 @@ import java.util.EnumSet;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -136,15 +138,15 @@ public class GroovyEngine implements ScriptEngine {
             "groovy.util.*",
             "java.math.BigInteger",
             "java.math.BigDecimal");
-    private final Map<String, Class<?>> defaultNameClass = new HashMap<>();
+    private final Map<String, Class<?>> defaultNameClass = new TreeMap<>();
     private final GroovyShell shell;
     protected Binding sharedData;
     private final List<Snippet> snippets = new ArrayList<>();
-    private final Map<String, Integer> imports = new HashMap<>();
-    private final Map<String, Integer> methods = new HashMap<>();
-    private final Map<String, Integer> variables = new HashMap<>();
+    private final Map<String, Integer> imports = new LinkedHashMap<>();
+    private final Map<String, Integer> methods = new LinkedHashMap<>();
+    private final Map<String, Integer> variables = new LinkedHashMap<>();
     private final Set<String> methodNames = new HashSet<>();
-    private final Map<String, Integer> types = new HashMap<>();
+    private final Map<String, Integer> types = new LinkedHashMap<>();
     private final Map<String, Class<?>> nameClass;
     private Cloner objectCloner = new ObjectCloner();
     protected final EngineClassLoader classLoader;
@@ -170,7 +172,7 @@ public class GroovyEngine implements ScriptEngine {
     }
 
     public Map<String, String> getTypes() {
-        Map<String, String> out = new HashMap<>();
+        Map<String, String> out = new LinkedHashMap<>();
         types.forEach((String key, Integer index) -> {
             Snippet snippet = snippets.get(index);
             if (snippet.getType() == SnippetType.TYPE) {
@@ -181,7 +183,7 @@ public class GroovyEngine implements ScriptEngine {
     }
 
     public Map<String, String> getVariables() {
-        Map<String, String> out = new HashMap<>();
+        Map<String, String> out = new LinkedHashMap<>();
         variables.forEach((String key, Integer index) -> {
             Snippet snippet = snippets.get(index);
             if (snippet.getType() == SnippetType.VARIABLE) {

Reply via email to