refactor: remove duplicate code

Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/67c5fa1c
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/67c5fa1c
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/67c5fa1c

Branch: refs/heads/GROOVY_2_4_X
Commit: 67c5fa1ca7fb1c0e778df556c443bae861ac230f
Parents: 3a31e95
Author: John Wagenleitner <[email protected]>
Authored: Sat Nov 26 10:05:46 2016 -0800
Committer: John Wagenleitner <[email protected]>
Committed: Sat Nov 26 10:10:19 2016 -0800

----------------------------------------------------------------------
 .../org/codehaus/groovy/syntax/TokenUtil.java   | 13 ++++-
 .../transform/trait/NAryOperationRewriter.java  | 59 +-------------------
 2 files changed, 15 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/67c5fa1c/src/main/org/codehaus/groovy/syntax/TokenUtil.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/syntax/TokenUtil.java 
b/src/main/org/codehaus/groovy/syntax/TokenUtil.java
index bfad787..603be11 100644
--- a/src/main/org/codehaus/groovy/syntax/TokenUtil.java
+++ b/src/main/org/codehaus/groovy/syntax/TokenUtil.java
@@ -16,15 +16,26 @@
  *  specific language governing permissions and limitations
  *  under the License.
  */
-
 package org.codehaus.groovy.syntax;
 
 import static org.codehaus.groovy.syntax.Types.*;
 
+/**
+ * Utility methods for working with Tokens.
+ *
+ */
 public class TokenUtil {
     private TokenUtil() {
     }
 
+    /**
+     * Removes the assignment portion of a given token.  If the given token
+     * is not an operator with assignment, the given token is returned.
+     *
+     * @param op token for which to remove assignment
+     * @return token without assignment, or the original token
+     *          if it was not an assignment operator
+     */
     public static int removeAssignment(int op) {
         switch (op) {
             case PLUS_EQUAL: return PLUS;

http://git-wip-us.apache.org/repos/asf/groovy/blob/67c5fa1c/src/main/org/codehaus/groovy/transform/trait/NAryOperationRewriter.java
----------------------------------------------------------------------
diff --git 
a/src/main/org/codehaus/groovy/transform/trait/NAryOperationRewriter.java 
b/src/main/org/codehaus/groovy/transform/trait/NAryOperationRewriter.java
index 53d5488..a713cb3 100644
--- a/src/main/org/codehaus/groovy/transform/trait/NAryOperationRewriter.java
+++ b/src/main/org/codehaus/groovy/transform/trait/NAryOperationRewriter.java
@@ -30,6 +30,7 @@ import org.codehaus.groovy.ast.expr.VariableExpression;
 import org.codehaus.groovy.control.SourceUnit;
 import org.codehaus.groovy.syntax.SyntaxException;
 import org.codehaus.groovy.syntax.Token;
+import org.codehaus.groovy.syntax.TokenUtil;
 
 import java.util.Collection;
 
@@ -107,8 +108,8 @@ class NAryOperationRewriter extends 
ClassCodeExpressionTransformer {
 
     private Expression transformBinaryExpression(final BinaryExpression exp) {
         final int op = exp.getOperation().getType();
-        int token = getOperationWithoutEqual(op);
-        if (token < 0) {
+        int token = TokenUtil.removeAssignment(op);
+        if (token == op) {
             // no transform needed
             return super.transform(exp);
         }
@@ -126,58 +127,4 @@ class NAryOperationRewriter extends 
ClassCodeExpressionTransformer {
         result.setSourcePosition(exp);
         return result;
     }
-
-    private static int getOperationWithoutEqual(final int op) {
-        int token = -1;
-        switch (op) {
-            case LOGICAL_OR_EQUAL:
-                token = LOGICAL_OR;
-                break;
-            case LOGICAL_AND_EQUAL:
-                token = LOGICAL_AND;
-                break;
-            case PLUS_EQUAL:
-                token = PLUS;
-                break;
-            case MINUS_EQUAL:
-                token = MINUS;
-                break;
-            case MULTIPLY_EQUAL:
-                token = MULTIPLY;
-                break;
-            case DIVIDE_EQUAL:
-                token = DIVIDE;
-                break;
-            case INTDIV_EQUAL:
-                token = INTDIV;
-                break;
-            case MOD_EQUAL:
-                token = MOD;
-                break;
-            case POWER_EQUAL:
-                token = POWER;
-                break;
-            case LEFT_SHIFT_EQUAL:
-                token = LEFT_SHIFT;
-                break;
-            case RIGHT_SHIFT_EQUAL:
-                token = RIGHT_SHIFT;
-                break;
-            case RIGHT_SHIFT_UNSIGNED_EQUAL:
-                token = RIGHT_SHIFT_UNSIGNED;
-                break;
-            case BITWISE_OR_EQUAL:
-                token = BITWISE_OR;
-                break;
-            case BITWISE_AND_EQUAL:
-                token = BITWISE_AND;
-                break;
-            case BITWISE_XOR_EQUAL:
-                token = BITWISE_XOR;
-                break;
-            default:
-                token = -1;
-        }
-        return token;
-    }
 }

Reply via email to