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/02/07 16:36:20 UTC
[groovy] branch GROOVY_2_5_X updated: use consistent class loader
for finding DGMs
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/GROOVY_2_5_X by this push:
new 52d6474 use consistent class loader for finding DGMs
52d6474 is described below
commit 52d64749889a52eb3fbac199c78dfa44947fe069
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Thu Jan 16 16:24:10 2020 -0600
use consistent class loader for finding DGMs
Conflicts:
src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
---
.../classgen/asm/sc/StaticTypesCallSiteWriter.java | 4 ++--
.../transform/stc/StaticTypeCheckingVisitor.java | 18 ++++++++++--------
2 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 7859e7c..f26a825 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -712,11 +712,11 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
boolean acceptAnyMethod =
MAP_TYPE.equals(rType) || rType.implementsInterface(MAP_TYPE)
|| LIST_TYPE.equals(rType) || rType.implementsInterface(LIST_TYPE);
- List<MethodNode> nodes = StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), rType, message, args);
+ List<MethodNode> nodes = findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), rType, message, args);
if (nodes.isEmpty()) {
// retry with raw types
rType = rType.getPlainNodeReference();
- nodes = StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), rType, message, args);
+ nodes = findDGMMethodsByNameAndArguments(controller.getSourceUnit().getClassLoader(), rType, message, args);
}
nodes = StaticTypeCheckingSupport.chooseBestMethod(rType, nodes, args);
if (nodes.size()==1 || nodes.size()>1 && acceptAnyMethod) {
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index a3e639b..1162175 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -1571,8 +1571,8 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
dgmReceivers.add(receiverType);
if (isPrimitiveType(receiverType)) dgmReceivers.add(getWrapper(receiverType));
for (ClassNode dgmReceiver : dgmReceivers) {
- List<MethodNode> methods = findDGMMethodsByNameAndArguments(getTransformLoader(), dgmReceiver, "get" + capName, ClassNode.EMPTY_ARRAY);
- for (MethodNode m : findDGMMethodsByNameAndArguments(getTransformLoader(), dgmReceiver, "is" + capName, ClassNode.EMPTY_ARRAY)) {
+ List<MethodNode> methods = findDGMMethodsByNameAndArguments(getSourceUnit().getClassLoader(), dgmReceiver, "get" + capName, ClassNode.EMPTY_ARRAY);
+ for (MethodNode m : findDGMMethodsByNameAndArguments(getSourceUnit().getClassLoader(), dgmReceiver, "is" + capName, ClassNode.EMPTY_ARRAY)) {
if (Boolean_TYPE.equals(getWrapper(m.getReturnType()))) methods.add(m);
}
if (!methods.isEmpty()) {
@@ -2862,8 +2862,8 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
ClosureSignatureHint hintInstance = hint.getDeclaredConstructor().newInstance();
closureSignatures = hintInstance.getClosureSignatures(
selectedMethod instanceof ExtensionMethodNode ? ((ExtensionMethodNode) selectedMethod).getExtensionMethodNode() : selectedMethod,
- typeCheckingContext.source,
- typeCheckingContext.compilationUnit,
+ typeCheckingContext.getSource(),
+ typeCheckingContext.getCompilationUnit(),
convertToStringArray(options), expression);
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) {
throw new GroovyBugError(e);
@@ -2884,8 +2884,8 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
arguments,
expression,
selectedMethod instanceof ExtensionMethodNode ? ((ExtensionMethodNode) selectedMethod).getExtensionMethodNode() : selectedMethod,
- typeCheckingContext.source,
- typeCheckingContext.compilationUnit,
+ typeCheckingContext.getSource(),
+ typeCheckingContext.getCompilationUnit(),
convertToStringArray(options));
} catch (ClassNotFoundException | IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) {
throw new GroovyBugError(e);
@@ -4546,8 +4546,10 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
collectAllInterfaceMethodsByName(receiver, name, methods);
}
- // lookup in DGM methods too
- findDGMMethodsByNameAndArguments(getTransformLoader(), receiver, name, args, methods);
+ if (!"<init>".equals(name) && !"<clinit>".equals(name)) {
+ // lookup in DGM methods too
+ findDGMMethodsByNameAndArguments(getSourceUnit().getClassLoader(), receiver, name, args, methods);
+ }
methods = filterMethodsByVisibility(methods);
List<MethodNode> chosen = chooseBestMethod(receiver, methods, args);
if (!chosen.isEmpty()) return chosen;