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 2019/12/20 17:36:12 UTC
[groovy] 01/04: GROOVY-9340: return type, not type redirect
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 8c07c38dfe88f1c20c6dede58e6d389ba83719fe
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Thu Dec 19 10:41:46 2019 -0600
GROOVY-9340: return type, not type redirect
(cherry picked from commit ba93a5585a6396d2d716a388dc9346f03f5974f1)
---
.../codehaus/groovy/ast/tools/GenericsUtils.java | 21 ++++++++-------------
src/test/groovy/transform/stc/LambdaTest.groovy | 2 +-
2 files changed, 9 insertions(+), 14 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
index 1fc1b9f..0cc25c9 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java
@@ -972,22 +972,15 @@ public class GenericsUtils {
}
/**
- * Get the actual type according to the placeholder name
+ * Gets the actual type according to the placeholder name.
*
- * @param placeholderName the placeholder name, e.g. T, E
+ * @param placeholderName the placeholder name (i.e. "T", "E", etc.)
* @param genericsPlaceholderAndTypeMap the result of {@link #makeDeclaringAndActualGenericsTypeMap(ClassNode, ClassNode)}
- * @return the actual type
*/
- public static ClassNode findActualTypeByGenericsPlaceholderName(String placeholderName, Map<GenericsType, GenericsType> genericsPlaceholderAndTypeMap) {
- for (Map.Entry<GenericsType, GenericsType> entry : genericsPlaceholderAndTypeMap.entrySet()) {
- GenericsType declaringGenericsType = entry.getKey();
-
- if (placeholderName.equals(declaringGenericsType.getName())) {
- return entry.getValue().getType().redirect();
- }
- }
-
- return null;
+ public static ClassNode findActualTypeByGenericsPlaceholderName(final String placeholderName, final Map<GenericsType, GenericsType> genericsPlaceholderAndTypeMap) {
+ return genericsPlaceholderAndTypeMap.entrySet().stream()
+ .filter(entry -> entry.getKey().getName().equals(placeholderName))
+ .map(entry -> entry.getValue().getType()).findFirst().orElse(null);
}
private static class ParameterizedTypeCacheKey {
@@ -1003,6 +996,7 @@ public class GenericsUtils {
return genericsClass;
}
+ @SuppressWarnings("unused")
public void setGenericsClass(ClassNode genericsClass) {
this.genericsClass = genericsClass;
}
@@ -1011,6 +1005,7 @@ public class GenericsUtils {
return actualType;
}
+ @SuppressWarnings("unused")
public void setActualType(ClassNode actualType) {
this.actualType = actualType;
}
diff --git a/src/test/groovy/transform/stc/LambdaTest.groovy b/src/test/groovy/transform/stc/LambdaTest.groovy
index d7b9553..4b2960b 100644
--- a/src/test/groovy/transform/stc/LambdaTest.groovy
+++ b/src/test/groovy/transform/stc/LambdaTest.groovy
@@ -178,7 +178,7 @@ final class LambdaTest {
'''
}
- @Test @NotYetImplemented // GROOVY-9340
+ @Test // GROOVY-9340
void testConsumerWithSelfType() {
assertScript '''
@groovy.transform.CompileStatic