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

emilles 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 4d177e7cb5 sync with 4_0_X
4d177e7cb5 is described below

commit 4d177e7cb5193c3ed7b12fb1d350d40df0cfaaa3
Author: Eric Milles <[email protected]>
AuthorDate: Mon Oct 10 10:24:24 2022 -0500

    sync with 4_0_X
---
 .../transform/stc/StaticTypeCheckingSupport.java   | 26 +++++++++++-----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
index 81423a2aec..7d7828eb65 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -2204,26 +2204,26 @@ public abstract class StaticTypeCheckingSupport {
                 return ((ListExpression) ce).getExpressions().stream().map(e 
-> evaluateExpression(e, config)).toArray(String[]::new);
         }
 
-        String className = "Expression$" + 
UUID.randomUUID().toString().replace('-', '$');
-        ClassNode simpleClass = new ClassNode(className, Opcodes.ACC_PUBLIC, 
OBJECT_TYPE);
-        addGeneratedMethod(simpleClass, "eval", Opcodes.ACC_PUBLIC + 
Opcodes.ACC_STATIC, OBJECT_TYPE, Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, 
new ReturnStatement(expr));
+        String className = 
"Expression$"+UUID.randomUUID().toString().replace('-', '$');
+        ClassNode classNode = new ClassNode(className, Opcodes.ACC_PUBLIC, 
OBJECT_TYPE);
+        addGeneratedMethod(classNode, "eval", Opcodes.ACC_PUBLIC | 
Opcodes.ACC_STATIC, OBJECT_TYPE, Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, 
new ReturnStatement(expr));
 
-        // adjust configuration so class can be inspected by this JVM
+        // adjust configuration so class can be executed by this JVM
         CompilerConfiguration cc = new CompilerConfiguration(config);
-        cc.setPreviewFeatures(false); // unlikely to be required by expression
+        cc.setPreviewFeatures(false);
+        cc.setScriptBaseClass(null);
         
cc.setTargetBytecode(CompilerConfiguration.DEFAULT.getTargetBytecode());
 
         CompilationUnit cu = new CompilationUnit(cc);
         try {
-            cu.addClassNode(simpleClass);
+            cu.addClassNode(classNode);
             cu.compile(Phases.CLASS_GENERATION);
-            List<GroovyClass> classes = cu.getClasses();
-            Class<?> aClass = cu.getClassLoader().defineClass(className, 
classes.get(0).getBytes());
-            try {
-                return aClass.getMethod("eval").invoke(null);
-            } catch (ReflectiveOperationException e) {
-                throw new GroovyBugError(e);
-            }
+            GroovyClass gc = cu.getClasses().get(0);
+            Class<?> c = cu.getClassLoader().defineClass(className, 
gc.getBytes());
+            // invoke method to produce return value
+            return c.getMethod("eval").invoke(null);
+        } catch (ReflectiveOperationException e) {
+            throw new GroovyBugError(e);
         } finally {
             closeQuietly(cu.getClassLoader());
         }

Reply via email to