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/01 10:41:44 UTC
[groovy] 06/20: refactor to remove repeated creation of Class
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 4d4be630e784a02b01852ce410f34de5aea202ea
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Nov 25 10:52:53 2019 -0600
refactor to remove repeated creation of Class<Type>
(cherry picked from commit 7127bb5b3f120ddaffa6630adb436ce68117ed04)
---
.../transform/stc/StaticTypeCheckingVisitor.java | 39 +++++++---------------
1 file changed, 12 insertions(+), 27 deletions(-)
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 bc36c28..cb5dd85 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -4913,42 +4913,27 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
private ClassNode getGenericsResolvedTypeOfFieldOrProperty(final AnnotatedNode an, final ClassNode type) {
if (!type.isUsingGenerics()) return type;
Map<GenericsTypeName, GenericsType> connections = new HashMap<>();
- //TODO: inner classes mean a different this-type. This is ignored here!
+ // TODO: inner classes mean a different this-type. This is ignored here!
extractGenericsConnections(connections, typeCheckingContext.getEnclosingClassNode(), an.getDeclaringClass());
return applyGenericsContext(connections, type);
}
- private ClassNode makeSuper() {
- ClassNode ret = typeCheckingContext.getEnclosingClassNode().getSuperClass();
- if (typeCheckingContext.isInStaticContext) {
- ClassNode staticRet = CLASS_Type.getPlainNodeReference();
- GenericsType gt = new GenericsType(ret);
- staticRet.setGenericsTypes(new GenericsType[]{gt});
- ret = staticRet;
+ private static ClassNode makeSelf(final ClassNode trait) {
+ ClassNode selfType = trait;
+ Set<ClassNode> selfTypes = Traits.collectSelfTypes(selfType, new LinkedHashSet<>());
+ if (!selfTypes.isEmpty()) {
+ selfTypes.add(selfType);
+ selfType = new UnionTypeClassNode(selfTypes.toArray(ClassNode.EMPTY_ARRAY));
}
- return ret;
+ return selfType;
}
- private ClassNode makeThis() {
- ClassNode ret = typeCheckingContext.getEnclosingClassNode();
- if (typeCheckingContext.isInStaticContext) {
- ClassNode staticRet = CLASS_Type.getPlainNodeReference();
- GenericsType gt = new GenericsType(ret);
- staticRet.setGenericsTypes(new GenericsType[]{gt});
- ret = staticRet;
- }
- return ret;
+ private ClassNode makeSuper() {
+ return makeType(typeCheckingContext.getEnclosingClassNode().getSuperClass(), typeCheckingContext.isInStaticContext);
}
- private static ClassNode makeSelf(final ClassNode trait) {
- ClassNode ret = trait;
- LinkedHashSet<ClassNode> selfTypes = new LinkedHashSet<>();
- Traits.collectSelfTypes(ret, selfTypes);
- if (!selfTypes.isEmpty()) {
- selfTypes.add(ret);
- ret = new UnionTypeClassNode(selfTypes.toArray(ClassNode.EMPTY_ARRAY));
- }
- return ret;
+ private ClassNode makeThis() {
+ return makeType(typeCheckingContext.getEnclosingClassNode(), typeCheckingContext.isInStaticContext);
}
/**