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 2019/11/25 16:53:03 UTC
[groovy] branch master updated: refactor to remove repeated
creation of Class
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 7127bb5 refactor to remove repeated creation of Class<Type>
7127bb5 is described below
commit 7127bb5b3f120ddaffa6630adb436ce68117ed04
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Mon Nov 25 10:52:53 2019 -0600
refactor to remove repeated creation of Class<Type>
---
.../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);
}
/**