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