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