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 {
-
}
-