This is an automated email from the ASF dual-hosted git repository.

paulk 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 faca105  minor refactor: remove some duplicated code
faca105 is described below

commit faca105e977e1f1585f9854d8c4ff2b03f3fc826
Author: Paul King <[email protected]>
AuthorDate: Wed Sep 23 16:31:29 2020 +1000

    minor refactor: remove some duplicated code
---
 .../groovy/transform/options/DefaultPropertyHandler.java  | 10 +++++-----
 .../transform/options/ImmutablePropertyHandler.java       |  8 ++++++--
 .../org/apache/groovy/ast/tools/ConstructorNodeUtils.java | 15 +++++++++++++++
 .../transform/TupleConstructorASTTransformation.java      |  7 ++-----
 4 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/src/main/java/groovy/transform/options/DefaultPropertyHandler.java 
b/src/main/java/groovy/transform/options/DefaultPropertyHandler.java
index a0462b6..4fb2e04 100644
--- a/src/main/java/groovy/transform/options/DefaultPropertyHandler.java
+++ b/src/main/java/groovy/transform/options/DefaultPropertyHandler.java
@@ -27,15 +27,15 @@ import org.codehaus.groovy.ast.expr.ArgumentListExpression;
 import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.MapExpression;
 import org.codehaus.groovy.ast.expr.MethodCallExpression;
+import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.transform.AbstractASTTransformation;
-import org.codehaus.groovy.transform.ImmutableASTTransformation;
 import org.codehaus.groovy.transform.MapConstructorASTTransformation;
 
 import java.util.List;
 
-import static org.codehaus.groovy.ast.ClassHelper.make;
+import static 
org.apache.groovy.ast.tools.ConstructorNodeUtils.checkPropNamesExpr;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.assignS;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.callThisX;
@@ -49,7 +49,6 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.stmt;
 import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
 
 public class DefaultPropertyHandler extends PropertyHandler {
-    private static final ClassNode IMMUTABLE_XFORM_TYPE = 
make(ImmutableASTTransformation.class);
 
     @Override
     public boolean validateAttributes(AbstractASTTransformation xform, 
AnnotationNode anno) {
@@ -61,8 +60,9 @@ public class DefaultPropertyHandler extends PropertyHandler {
     @Override
     public boolean validateProperties(AbstractASTTransformation xform, 
BlockStatement body, ClassNode cNode, List<PropertyNode> props) {
         if (xform instanceof MapConstructorASTTransformation) {
-            body.addStatement(ifS(equalsNullX(varX("args")), 
assignS(varX("args"), new MapExpression())));
-            body.addStatement(stmt(callX(IMMUTABLE_XFORM_TYPE, 
"checkPropNames", args("this", "args"))));
+            VariableExpression namedArgs = varX("args");
+            body.addStatement(ifS(equalsNullX(namedArgs), assignS(namedArgs, 
new MapExpression())));
+            body.addStatement(stmt(checkPropNamesExpr(namedArgs)));
         }
         return super.validateProperties(xform, body, cNode, props);
     }
diff --git 
a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java 
b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
index 65f1c29..e3c74a4 100644
--- a/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
+++ b/src/main/java/groovy/transform/options/ImmutablePropertyHandler.java
@@ -19,6 +19,7 @@
 package groovy.transform.options;
 
 import groovy.lang.ReadOnlyPropertyException;
+import groovy.transform.stc.POJO;
 import org.apache.groovy.ast.tools.ImmutablePropertyUtils;
 import org.codehaus.groovy.ast.AnnotationNode;
 import org.codehaus.groovy.ast.ClassHelper;
@@ -31,6 +32,7 @@ import org.codehaus.groovy.ast.expr.ConstantExpression;
 import org.codehaus.groovy.ast.expr.Expression;
 import org.codehaus.groovy.ast.expr.MapExpression;
 import org.codehaus.groovy.ast.expr.MethodCallExpression;
+import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
 import org.codehaus.groovy.ast.stmt.EmptyStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
@@ -47,6 +49,7 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.SortedSet;
 
+import static 
org.apache.groovy.ast.tools.ConstructorNodeUtils.checkPropNamesExpr;
 import static 
org.apache.groovy.ast.tools.ImmutablePropertyUtils.cloneArrayOrCloneableExpr;
 import static org.apache.groovy.ast.tools.ImmutablePropertyUtils.cloneDateExpr;
 import static 
org.apache.groovy.ast.tools.ImmutablePropertyUtils.derivesFromDate;
@@ -119,8 +122,9 @@ public class ImmutablePropertyHandler extends 
PropertyHandler {
     @Override
     public boolean validateProperties(AbstractASTTransformation xform, 
BlockStatement body, ClassNode cNode, List<PropertyNode> props) {
         if (xform instanceof MapConstructorASTTransformation) {
-            body.addStatement(ifS(equalsNullX(varX("args")), 
assignS(varX("args"), new MapExpression())));
-            body.addStatement(stmt(callX(SELF_TYPE, "checkPropNames", 
args("this", "args"))));
+            VariableExpression namedArgs = varX("args");
+            body.addStatement(ifS(equalsNullX(namedArgs), assignS(namedArgs, 
new MapExpression())));
+            body.addStatement(stmt(checkPropNamesExpr(namedArgs)));
         }
         return super.validateProperties(xform, body, cNode, props);
     }
diff --git 
a/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java 
b/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
index 87851f4..849ef9d 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ConstructorNodeUtils.java
@@ -18,18 +18,29 @@
  */
 package org.apache.groovy.ast.tools;
 
+import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.expr.ConstructorCallExpression;
 import org.codehaus.groovy.ast.expr.Expression;
+import org.codehaus.groovy.ast.expr.StaticMethodCallExpression;
+import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.ast.stmt.BlockStatement;
 import org.codehaus.groovy.ast.stmt.ExpressionStatement;
 import org.codehaus.groovy.ast.stmt.Statement;
+import org.codehaus.groovy.transform.ImmutableASTTransformation;
 
 import java.util.List;
 
+import static org.codehaus.groovy.ast.ClassHelper.make;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.args;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.callX;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
+
 /**
  * Utility class for working with ConstructorNodes
  */
 public class ConstructorNodeUtils {
+    private static final ClassNode IMMUTABLE_TYPE = 
make(ImmutableASTTransformation.class);
+
     private ConstructorNodeUtils() { }
 
     /**
@@ -57,4 +68,8 @@ public class ConstructorNodeUtils {
         if (cce.isSpecialCall()) return cce;
         return null;
     }
+
+    public static StaticMethodCallExpression 
checkPropNamesExpr(VariableExpression namedArgs) {
+        return callX(IMMUTABLE_TYPE, "checkPropNames", args(varX("this"), 
namedArgs));
+    }
 }
diff --git 
a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
 
b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index 82a75dc..636eb2c 100644
--- 
a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ 
b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -20,7 +20,6 @@ package org.codehaus.groovy.transform;
 
 import groovy.lang.GroovyClassLoader;
 import groovy.transform.CompilationUnitAware;
-import groovy.transform.MapConstructor;
 import groovy.transform.TupleConstructor;
 import groovy.transform.options.PropertyHandler;
 import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
@@ -46,7 +45,6 @@ import org.codehaus.groovy.control.CompilationUnit;
 import org.codehaus.groovy.control.CompilePhase;
 import org.codehaus.groovy.control.SourceUnit;
 
-import java.lang.annotation.Annotation;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -58,6 +56,7 @@ import java.util.Set;
 
 import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.markAsGenerated;
 import static 
org.apache.groovy.ast.tools.ClassNodeUtils.hasExplicitConstructor;
+import static 
org.apache.groovy.ast.tools.ConstructorNodeUtils.checkPropNamesExpr;
 import static org.apache.groovy.ast.tools.VisibilityUtils.getVisibility;
 import static org.codehaus.groovy.ast.ClassHelper.make;
 import static org.codehaus.groovy.ast.ClassHelper.makeWithoutCaching;
@@ -92,8 +91,6 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
     static final ClassNode MY_TYPE = make(MY_CLASS);
     static final String MY_TYPE_NAME = "@" + MY_TYPE.getNameWithoutPackage();
     private static final ClassNode LHMAP_TYPE = 
makeWithoutCaching(LinkedHashMap.class, false);
-    private static final ClassNode CHECK_METHOD_TYPE = 
make(ImmutableASTTransformation.class);
-    private static final Class<? extends Annotation> MAP_CONSTRUCTOR_CLASS = 
MapConstructor.class;
     private static final Map<Class<?>, Expression> primitivesInitialValues;
 
     static {
@@ -343,7 +340,7 @@ public class TupleConstructorASTTransformation extends 
AbstractASTTransformation
                     assignS(varX(pNode), propX(namedArgs, pNode.getName())));
             block.addStatement(ifStatement);
         }
-        block.addStatement(stmt(callX(CHECK_METHOD_TYPE, "checkPropNames", 
args(varX("this"), namedArgs))));
+        block.addStatement(stmt(checkPropNamesExpr(namedArgs)));
         return block;
     }
 

Reply via email to