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;
     }