You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2018/05/13 16:00:49 UTC
groovy git commit: Minor refactoring: reuse
`findActualTypeByPlaceholderName`
Repository: groovy
Updated Branches:
refs/heads/master 009c42c1e -> b8b5bd567
Minor refactoring: reuse `findActualTypeByPlaceholderName`
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/b8b5bd56
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/b8b5bd56
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/b8b5bd56
Branch: refs/heads/master
Commit: b8b5bd567410203b4bb9f86f3d5f54668e1c3a90
Parents: 009c42c
Author: sunlan <su...@apache.org>
Authored: Mon May 14 00:00:34 2018 +0800
Committer: sunlan <su...@apache.org>
Committed: Mon May 14 00:00:34 2018 +0800
----------------------------------------------------------------------
.../groovy/transform/stc/StaticTypeCheckingSupport.java | 12 ++++--------
.../groovy/transform/stc/StaticTypeCheckingVisitor.java | 8 ++++----
2 files changed, 8 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/b8b5bd56/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
----------------------------------------------------------------------
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 3ea9764..316953b 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingSupport.java
@@ -1189,14 +1189,10 @@ public abstract class StaticTypeCheckingSupport {
return isExtensionMethodNode ? 0 : 1;
}
- private static ClassNode findGenericsTypeByPlaceholderName(String placeholderName, Map<String, GenericsType> placeholderInfo) {
- for (Map.Entry<String, GenericsType> entry : placeholderInfo.entrySet()) {
- if (placeholderName.equals(entry.getKey())) {
- return entry.getValue().getType();
- }
- }
+ public static ClassNode findActualTypeByPlaceholderName(String placeholderName, Map<String, GenericsType> placeholderInfo) {
+ GenericsType gt = placeholderInfo.get(placeholderName);
- return null;
+ return null == gt ? null : gt.getType().redirect();
}
private static Parameter[] makeRawTypes(Parameter[] params, ClassNode declaringClassForDistance, ClassNode actualReceiverForDistance) {
@@ -1206,7 +1202,7 @@ public abstract class StaticTypeCheckingSupport {
for (int i = 0; i < params.length; i++) {
Parameter oldP = params[i];
- ClassNode actualType = findGenericsTypeByPlaceholderName(oldP.getType().getUnresolvedName(), placeholderInfo);
+ ClassNode actualType = findActualTypeByPlaceholderName(oldP.getType().getUnresolvedName(), placeholderInfo);
Parameter newP = new Parameter(makeRawType(null == actualType ? oldP.getType() : actualType), oldP.getName());
newParam[i] = newP;
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/b8b5bd56/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
----------------------------------------------------------------------
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 34b95df..e474286 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -217,6 +217,7 @@ import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.choose
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.evaluateExpression;
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsConnections;
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.extractGenericsParameterMapOfThis;
+import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findActualTypeByPlaceholderName;
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findDGMMethodsByNameAndArguments;
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findSetters;
import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.findTargetVariable;
@@ -598,11 +599,10 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
ClassNode parameterizedType = GenericsUtils.findParameterizedType(fieldNode.getDeclaringClass(), typeCheckingContext.getEnclosingClassNode());
if (null != parameterizedType) {
ClassNode originalType = fieldNode.getOriginType();
- GenericsType gt = GenericsUtils.extractPlaceholders(parameterizedType).get(originalType.getUnresolvedName());
+ ClassNode actualType = findActualTypeByPlaceholderName(originalType.getUnresolvedName(), GenericsUtils.extractPlaceholders(parameterizedType));
- if (null != gt) {
- ClassNode redirect = gt.getType().redirect();
- storeType(vexp, redirect);
+ if (null != actualType) {
+ storeType(vexp, actualType);
return;
}
}