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 2017/04/11 01:38:13 UTC

[37/50] groovy git commit: Refine the verification for assignments

Refine the verification for assignments


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

Branch: refs/heads/master
Commit: fc490b9793d3b6210977df20668d876258350db8
Parents: b017a53
Author: sunlan <su...@apache.org>
Authored: Tue Mar 28 00:34:53 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Tue Mar 28 00:34:53 2017 +0800

----------------------------------------------------------------------
 .../classgen/ClassCompletionVerifier.java       | 23 +++-----------------
 .../groovy/classgen/VariableScopeVisitor.java   | 22 +++----------------
 src/main/org/codehaus/groovy/syntax/Types.java  |  2 ++
 3 files changed, 8 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/groovy/blob/fc490b97/src/main/org/codehaus/groovy/classgen/ClassCompletionVerifier.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/ClassCompletionVerifier.java b/src/main/org/codehaus/groovy/classgen/ClassCompletionVerifier.java
index a8f4948..4319f2a 100644
--- a/src/main/org/codehaus/groovy/classgen/ClassCompletionVerifier.java
+++ b/src/main/org/codehaus/groovy/classgen/ClassCompletionVerifier.java
@@ -510,26 +510,9 @@ public class ClassCompletionVerifier extends ClassCodeVisitorSupport {
         }
         super.visitBinaryExpression(expression);
 
-        switch (expression.getOperation().getType()) {
-            case Types.EQUAL: // = assignment
-            case Types.BITWISE_AND_EQUAL:
-            case Types.BITWISE_OR_EQUAL:
-            case Types.BITWISE_XOR_EQUAL:
-            case Types.PLUS_EQUAL:
-            case Types.MINUS_EQUAL:
-            case Types.MULTIPLY_EQUAL:
-            case Types.DIVIDE_EQUAL:
-            case Types.INTDIV_EQUAL:
-            case Types.MOD_EQUAL:
-            case Types.POWER_EQUAL:
-            case Types.LEFT_SHIFT_EQUAL:
-            case Types.RIGHT_SHIFT_EQUAL:
-            case Types.RIGHT_SHIFT_UNSIGNED_EQUAL:
-                checkFinalFieldAccess(expression.getLeftExpression());
-                checkSuperOrThisOnLHS(expression.getLeftExpression());
-                break;
-            default:
-                break;
+        if (Types.ASSIGNMENT_SET.contains(expression.getOperation().getType())) {
+            checkFinalFieldAccess(expression.getLeftExpression());
+            checkSuperOrThisOnLHS(expression.getLeftExpression());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/fc490b97/src/main/org/codehaus/groovy/classgen/VariableScopeVisitor.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/VariableScopeVisitor.java b/src/main/org/codehaus/groovy/classgen/VariableScopeVisitor.java
index 9085eb7..ad9dd76 100644
--- a/src/main/org/codehaus/groovy/classgen/VariableScopeVisitor.java
+++ b/src/main/org/codehaus/groovy/classgen/VariableScopeVisitor.java
@@ -347,25 +347,9 @@ public class VariableScopeVisitor extends ClassCodeVisitorSupport {
     @Override
     public void visitBinaryExpression(BinaryExpression be) {
         super.visitBinaryExpression(be);
-        switch (be.getOperation().getType()) {
-            case Types.EQUAL: // = assignment
-            case Types.BITWISE_AND_EQUAL:
-            case Types.BITWISE_OR_EQUAL:
-            case Types.BITWISE_XOR_EQUAL:
-            case Types.PLUS_EQUAL:
-            case Types.MINUS_EQUAL:
-            case Types.MULTIPLY_EQUAL:
-            case Types.DIVIDE_EQUAL:
-            case Types.INTDIV_EQUAL:
-            case Types.MOD_EQUAL:
-            case Types.POWER_EQUAL:
-            case Types.LEFT_SHIFT_EQUAL:
-            case Types.RIGHT_SHIFT_EQUAL:
-            case Types.RIGHT_SHIFT_UNSIGNED_EQUAL:
-                checkFinalFieldAccess(be.getLeftExpression());
-                break;
-            default:
-                break;
+
+        if (Types.ASSIGNMENT_SET.contains(be.getOperation().getType())) {
+            checkFinalFieldAccess(be.getLeftExpression());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/groovy/blob/fc490b97/src/main/org/codehaus/groovy/syntax/Types.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/syntax/Types.java b/src/main/org/codehaus/groovy/syntax/Types.java
index 534c5ea..f03fc18 100644
--- a/src/main/org/codehaus/groovy/syntax/Types.java
+++ b/src/main/org/codehaus/groovy/syntax/Types.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.syntax;
 
 import org.codehaus.groovy.GroovyBugError;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
@@ -1446,4 +1447,5 @@ public class Types
         addDescription( SWITCH_ENTRIES              , "<valid in a switch body>"     );
     }
 
+    public static final Set<Integer> ASSIGNMENT_SET = new HashSet<Integer>(Arrays.asList(EQUAL, BITWISE_AND_EQUAL, BITWISE_OR_EQUAL, BITWISE_XOR_EQUAL, PLUS_EQUAL, MINUS_EQUAL, MULTIPLY_EQUAL, DIVIDE_EQUAL, INTDIV_EQUAL, MOD_EQUAL, POWER_EQUAL, LEFT_SHIFT_EQUAL, RIGHT_SHIFT_EQUAL, RIGHT_SHIFT_UNSIGNED_EQUAL, ELVIS_EQUAL));
 }