You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2021/03/10 16:30:40 UTC

[groovy] branch master updated: minor edits

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 4fb2ebb  minor edits
4fb2ebb is described below

commit 4fb2ebbfea923e32efa87e7c5bfb4d4bd22140ad
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Mar 10 09:59:28 2021 -0600

    minor edits
---
 .../asm/sc/AbstractFunctionalInterfaceWriter.java     |  2 +-
 .../classgen/asm/sc/StaticTypesLambdaWriter.java      | 19 ++++++-------------
 .../codehaus/groovy/control/StaticImportVisitor.java  |  6 +++---
 .../groovy/runtime/metaclass/ClosureMetaClass.java    |  6 +++---
 .../transform/trait/SuperCallTraitTransformer.java    |  4 ++--
 src/test/groovy/transform/stc/GenericsSTCTest.groovy  |  2 +-
 .../classgen/asm/sc/GenericsStaticCompileTest.groovy  |  4 +---
 7 files changed, 17 insertions(+), 26 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/AbstractFunctionalInterfaceWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/AbstractFunctionalInterfaceWriter.java
index 57c681c..8a01b6f 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/AbstractFunctionalInterfaceWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/AbstractFunctionalInterfaceWriter.java
@@ -108,7 +108,7 @@ public interface AbstractFunctionalInterfaceWriter {
     }
 
     default ClassNode convertParameterType(ClassNode parameterType, ClassNode inferredType) {
-        if (!getWrapper(inferredType.redirect()).isDerivedFrom(getWrapper(parameterType.redirect()))) {
+        if (!getWrapper(inferredType).isDerivedFrom(getWrapper(parameterType))) {
             throw new RuntimeParserException("The inferred type[" + inferredType.redirect() + "] is not compatible with the parameter type[" + parameterType.redirect() + "]", parameterType);
         }
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
index 912d892..1cf4f5b 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesLambdaWriter.java
@@ -33,6 +33,7 @@ import org.codehaus.groovy.ast.expr.LambdaExpression;
 import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
+import org.codehaus.groovy.ast.tools.ClosureUtils;
 import org.codehaus.groovy.classgen.BytecodeInstruction;
 import org.codehaus.groovy.classgen.BytecodeSequence;
 import org.codehaus.groovy.classgen.asm.BytecodeHelper;
@@ -296,23 +297,15 @@ public class StaticTypesLambdaWriter extends LambdaWriter implements AbstractFun
     }
 
     private Parameter[] createParametersWithExactType(final LambdaExpression expression) {
-        Parameter[] parameters = expression.getParameters();
-        if (parameters == null) {
-            parameters = Parameter.EMPTY_ARRAY;
-        }
-
+        Parameter[] parameters = ClosureUtils.getParametersSafe(expression);
         for (Parameter parameter : parameters) {
             ClassNode inferredType = parameter.getNodeMetaData(StaticTypesMarker.INFERRED_TYPE);
-            if (inferredType == null) {
-                continue;
+            if (inferredType != null) {
+                ClassNode type = convertParameterType(parameter.getType(), inferredType);
+                parameter.setOriginType(type);
+                parameter.setType(type);
             }
-
-            ClassNode type = convertParameterType(parameter.getType(), inferredType);
-
-            parameter.setType(type);
-            parameter.setOriginType(type);
         }
-
         return parameters;
     }
 
diff --git a/src/main/java/org/codehaus/groovy/control/StaticImportVisitor.java b/src/main/java/org/codehaus/groovy/control/StaticImportVisitor.java
index 08416e3..694213a 100644
--- a/src/main/java/org/codehaus/groovy/control/StaticImportVisitor.java
+++ b/src/main/java/org/codehaus/groovy/control/StaticImportVisitor.java
@@ -352,11 +352,11 @@ public class StaticImportVisitor extends ClassCodeExpressionTransformer {
     }
 
     protected Expression transformPropertyExpression(PropertyExpression pe) {
-        if (currentMethod!=null && currentMethod.isStatic()
+        if (currentMethod != null && currentMethod.isStatic()
                 && pe.getObjectExpression() instanceof VariableExpression
                 && ((VariableExpression) pe.getObjectExpression()).isSuperExpression()) {
             PropertyExpression pexp = new PropertyExpression(
-                    new ClassExpression(currentClass.getSuperClass()),
+                    new ClassExpression(currentClass.getUnresolvedSuperClass()),
                     transform(pe.getProperty())
             );
             pexp.setSourcePosition(pe);
@@ -373,7 +373,7 @@ public class StaticImportVisitor extends ClassCodeExpressionTransformer {
         if (foundArgs != null && foundConstant != null
                 && !foundConstant.getText().trim().isEmpty()
                 && objectExpression instanceof MethodCallExpression
-                && ((MethodCallExpression)objectExpression).isImplicitThis()) {
+                && ((MethodCallExpression) objectExpression).isImplicitThis()) {
             Expression result = findStaticMethodImportFromModule(foundConstant, foundArgs);
             if (result != null) {
                 objectExpression = result;
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
index 51116bd..c144ee4 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
@@ -331,15 +331,15 @@ public final class ClosureMetaClass extends MetaClassImpl {
                 return method.doMethodInvoke(callObject, arguments);
             }
         } else {
-            // if no method was found, try to find a closure defined as a field of the class and run it
+            // no method was found; try to find a closure defined as a field of the class and run it
             Object value = null;
             try {
-                value = this.getProperty(object, methodName);
+                value = getProperty(sender, object, methodName, isCallToSuper, fromInsideClass);
             } catch (MissingPropertyException mpe) {
                 // ignore
             }
             if (value instanceof Closure) {  // This test ensures that value != this If you ever change this ensure that value != this
-                Closure cl = (Closure) value;
+                Closure<?> cl = (Closure<?>) value;
                 MetaClass delegateMetaClass = cl.getMetaClass();
                 return delegateMetaClass.invokeMethod(cl.getClass(), closure, CLOSURE_DO_CALL_METHOD, originalArguments, false, fromInsideClass);
             }
diff --git a/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java b/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
index 8e9193d..5cff9a5 100644
--- a/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
+++ b/src/main/java/org/codehaus/groovy/transform/trait/SuperCallTraitTransformer.java
@@ -150,7 +150,7 @@ class SuperCallTraitTransformer extends ClassCodeExpressionTransformer {
                                         ? thisPropX(false, "class") : varX("this")
                             )
                     );
-                    methodCall.getObjectExpression().setSourcePosition(((PropertyExpression) exp.getObjectExpression()).getObjectExpression());
+                    methodCall.getObjectExpression().setSourcePosition(traitType);
                     methodCall.getMethod().setSourcePosition(exp.getProperty());
                     methodCall.setSpreadSafe(exp.isSpreadSafe());
                     methodCall.setMethodTarget(methodNode);
@@ -207,7 +207,7 @@ class SuperCallTraitTransformer extends ClassCodeExpressionTransformer {
                     transform(exp.getMethod()),
                     newArgs
             );
-            newCall.getObjectExpression().setSourcePosition(((PropertyExpression) exp.getObjectExpression()).getObjectExpression());
+            newCall.getObjectExpression().setSourcePosition(traitType);
             newCall.setSpreadSafe(exp.isSpreadSafe());
             newCall.setImplicitThis(false);
             return newCall;
diff --git a/src/test/groovy/transform/stc/GenericsSTCTest.groovy b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
index f48b18d..1b49c68 100644
--- a/src/test/groovy/transform/stc/GenericsSTCTest.groovy
+++ b/src/test/groovy/transform/stc/GenericsSTCTest.groovy
@@ -2559,7 +2559,7 @@ class GenericsSTCTest extends StaticTypeCheckingTestCase {
         '''
     }
 
-    // GROOVY-9981
+    // GROOVY-9891
     void testBoundedReturnTypeChecking3() {
         assertScript '''
             class Pogo {
diff --git a/src/test/org/codehaus/groovy/classgen/asm/sc/GenericsStaticCompileTest.groovy b/src/test/org/codehaus/groovy/classgen/asm/sc/GenericsStaticCompileTest.groovy
index ed1fb12..4a599b2 100644
--- a/src/test/org/codehaus/groovy/classgen/asm/sc/GenericsStaticCompileTest.groovy
+++ b/src/test/org/codehaus/groovy/classgen/asm/sc/GenericsStaticCompileTest.groovy
@@ -21,9 +21,7 @@ package org.codehaus.groovy.classgen.asm.sc
 import groovy.transform.stc.GenericsSTCTest
 
 /**
- * Unit tests for static type checking : generics.
+ * Unit tests for static compilation : generics.
  */
 class GenericsStaticCompileTest extends GenericsSTCTest implements StaticCompilationTestSupport {
-
 }
-