You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/02/21 05:05:58 UTC
[groovy] 03/03: minor refactor: add method for checking for
presence of @Generated (removes a little bit of dup)
This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch GROOVY_3_0_X
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit 6599c8aba2d6a3dcde79bf1ec6a63702140884d6
Author: Paul King <pa...@asert.com.au>
AuthorDate: Wed Feb 19 10:51:53 2020 +1000
minor refactor: add method for checking for presence of @Generated (removes a little bit of dup)
---
.../java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java | 9 +++++++--
.../java/org/apache/groovy/ast/tools/ClassNodeUtils.java | 12 +++++-------
.../asm/sc/StaticTypesMethodReferenceExpressionWriter.java | 11 +++++++----
3 files changed, 19 insertions(+), 13 deletions(-)
diff --git a/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
index 08ff047..6b370eb 100644
--- a/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
@@ -41,14 +41,19 @@ public class AnnotatedNodeUtils {
public static <T extends AnnotatedNode> T markAsGenerated(ClassNode containingClass, T nodeToMark, boolean skipChecks) {
boolean shouldAnnotate = skipChecks || (containingClass.getModule() != null && containingClass.getModule().getContext() != null);
- if (shouldAnnotate && !hasAnnotation(nodeToMark, GENERATED_TYPE)) {
+ if (shouldAnnotate && !isGenerated(nodeToMark)) {
nodeToMark.addAnnotation(new AnnotationNode(GENERATED_TYPE));
}
return nodeToMark;
}
public static boolean hasAnnotation(AnnotatedNode node, ClassNode annotation) {
- List annots = node.getAnnotations(annotation);
+ List<?> annots = node.getAnnotations(annotation);
+ return (annots != null && !annots.isEmpty());
+ }
+
+ public static boolean isGenerated(AnnotatedNode node) {
+ List<?> annots = node.getAnnotations(GENERATED_TYPE);
return (annots != null && !annots.isEmpty());
}
}
diff --git a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
index 5eea16a..c546316 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
@@ -18,7 +18,6 @@
*/
package org.apache.groovy.ast.tools;
-import groovy.transform.Generated;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
import org.codehaus.groovy.ast.ConstructorNode;
@@ -42,7 +41,7 @@ import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.hasAnnotation;
+import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.isGenerated;
import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.markAsGenerated;
import static org.codehaus.groovy.ast.ClassHelper.boolean_TYPE;
import static org.objectweb.asm.Opcodes.ACC_SYNTHETIC;
@@ -51,7 +50,6 @@ import static org.objectweb.asm.Opcodes.ACC_SYNTHETIC;
* Utility class for working with ClassNodes
*/
public class ClassNodeUtils {
- private static final ClassNode GENERATED_TYPE = ClassHelper.make(Generated.class);
/**
* Formats a type name into a human readable version. For arrays, appends "[]" to the formatted
@@ -146,7 +144,7 @@ public class ClassNodeUtils {
public static Map<String, MethodNode> getDeclaredMethodsFromSuper(ClassNode cNode) {
ClassNode parent = cNode.getSuperClass();
if (parent == null) {
- return new HashMap<String, MethodNode>();
+ return new HashMap<>();
}
return parent.getDeclaredMethodsMap();
}
@@ -191,7 +189,7 @@ public class ClassNodeUtils {
* @param methodsMap A map of existing methods to alter
*/
public static void addDeclaredMethodsFromAllInterfaces(ClassNode cNode, Map<String, MethodNode> methodsMap) {
- List cnInterfaces = Arrays.asList(cNode.getInterfaces());
+ List<?> cnInterfaces = Arrays.asList(cNode.getInterfaces());
ClassNode parent = cNode.getSuperClass();
while (parent != null && !parent.equals(ClassHelper.OBJECT_TYPE)) {
ClassNode[] interfaces = parent.getInterfaces();
@@ -360,7 +358,7 @@ public class ClassNodeUtils {
List<ConstructorNode> declaredConstructors = cNode.getDeclaredConstructors();
for (ConstructorNode constructorNode : declaredConstructors) {
// allow constructors added by other transforms if flagged as Generated
- if (hasAnnotation(constructorNode, GENERATED_TYPE)) {
+ if (isGenerated(constructorNode)) {
continue;
}
if (xform != null) {
@@ -394,7 +392,7 @@ public class ClassNodeUtils {
*/
public static FieldNode getField(ClassNode classNode, String fieldName) {
ClassNode node = classNode;
- Set<String> visited = new HashSet<String>();
+ Set<String> visited = new HashSet<>();
while (node != null) {
FieldNode fn = node.getDeclaredField(fieldName);
if (fn != null) return fn;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
index 28a764c..1b9bb99 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesMethodReferenceExpressionWriter.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.classgen.asm.sc;
import groovy.lang.Tuple;
import groovy.lang.Tuple2;
+import groovy.transform.CompileStatic;
import groovy.transform.Generated;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotationNode;
@@ -66,6 +67,8 @@ import static org.codehaus.groovy.transform.stc.StaticTypesMarker.CLOSURE_ARGUME
*/
public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceExpressionWriter implements AbstractFunctionalInterfaceWriter {
private static final String METHODREF_EXPR_INSTANCE = "__METHODREF_EXPR_INSTANCE";
+ private static final ClassNode GENERATED_TYPE = ClassHelper.make(Generated.class);
+ private static final ClassNode COMPILE_STATIC_TYPE = ClassHelper.make(CompileStatic.class);
public StaticTypesMethodReferenceExpressionWriter(WriterController controller) {
super(controller);
@@ -209,8 +212,8 @@ public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceE
)
);
- syntheticMethodNode.addAnnotation(new AnnotationNode(ClassHelper.make(Generated.class)));
- syntheticMethodNode.addAnnotation(new AnnotationNode(ClassHelper.make(groovy.transform.CompileStatic.class)));
+ syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
+ syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
return syntheticMethodNode;
}
@@ -239,8 +242,8 @@ public class StaticTypesMethodReferenceExpressionWriter extends MethodReferenceE
)
);
- syntheticMethodNode.addAnnotation(new AnnotationNode(ClassHelper.make(Generated.class)));
- syntheticMethodNode.addAnnotation(new AnnotationNode(ClassHelper.make(groovy.transform.CompileStatic.class)));
+ syntheticMethodNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
+ syntheticMethodNode.addAnnotation(new AnnotationNode(COMPILE_STATIC_TYPE));
return syntheticMethodNode;
}