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/11/17 12:18:37 UTC
groovy git commit: GROOVY-8380: Regression in 2.4.13 (snapshot) with
and/or/xor and @CS
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_4_X 68b99b12a -> 091a787af
GROOVY-8380: Regression in 2.4.13 (snapshot) with and/or/xor and @CS
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/091a787a
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/091a787a
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/091a787a
Branch: refs/heads/GROOVY_2_4_X
Commit: 091a787af6ae3c0a999955ff4d2b8d19e65a5cc0
Parents: 68b99b1
Author: paulk <pa...@asert.com.au>
Authored: Fri Nov 17 20:32:34 2017 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Fri Nov 17 22:18:20 2017 +1000
----------------------------------------------------------------------
.../asm/sc/StaticTypesCallSiteWriter.java | 3 ++-
.../stc/StaticTypeCheckingVisitor.java | 6 +++---
.../groovy/transform/stc/MiscSTCTest.groovy | 20 ++++++++++++++++++++
3 files changed, 25 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/091a787a/src/main/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 618066b..43bd529 100644
--- a/src/main/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -654,7 +654,8 @@ public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes
} else if ("power".equals(message)) {
writePowerCall(receiver, arguments, rType, aType);
return true;
- } else if ("mod".equals(message) || "leftShift".equals(message) || "rightShift".equals(message) || "rightShiftUnsigned".equals(message)) {
+ } else if ("mod".equals(message) || "leftShift".equals(message) || "rightShift".equals(message) || "rightShiftUnsigned".equals(message)
+ || "and".equals(message) || "or".equals(message) || "xor".equals(message)) {
writeOperatorCall(receiver, arguments, message);
return true;
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/091a787a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index d0bf2eb..eba559e 100644
--- a/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -3640,9 +3640,9 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
} else if (isPowerOperator(op)) {
return Number_TYPE;
} else if (isBitOperator(op)) {
- if (isIntCategory(leftRedirect) && isIntCategory(rightRedirect)) return int_TYPE;
- if (isLongCategory(leftRedirect) && isLongCategory(rightRedirect)) return long_TYPE;
- if (isBigIntCategory(leftRedirect) && isBigIntCategory(rightRedirect)) return BigInteger_TYPE;
+ if (isIntCategory(getUnwrapper(leftRedirect)) && isIntCategory(getUnwrapper(rightRedirect))) return int_TYPE;
+ if (isLongCategory(getUnwrapper(leftRedirect)) && isLongCategory(getUnwrapper(rightRedirect))) return long_TYPE;
+ if (isBigIntCategory(getUnwrapper(leftRedirect)) && isBigIntCategory(getUnwrapper(rightRedirect))) return BigInteger_TYPE;
} else if (isCompareToBoolean(op) || op == COMPARE_EQUAL || op == COMPARE_NOT_EQUAL) {
return boolean_TYPE;
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/091a787a/src/test/groovy/transform/stc/MiscSTCTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/groovy/transform/stc/MiscSTCTest.groovy b/src/test/groovy/transform/stc/MiscSTCTest.groovy
index fd132e3..0b786d8 100644
--- a/src/test/groovy/transform/stc/MiscSTCTest.groovy
+++ b/src/test/groovy/transform/stc/MiscSTCTest.groovy
@@ -389,4 +389,24 @@ class MiscSTCTest extends StaticTypeCheckingTestCase {
''', 'Cannot find matching method Foo#newInstance2(CustomNumber)'
}
+ // GROOVY-8380
+ void testBitOperatorsWithNumbers() {
+ assertScript '''
+ def method() {
+ Long wl = 2L
+ long pl = 3L
+ assert new Long(wl & 3L) == 2
+ assert new Long(pl & pl) == 3
+ assert new Long(6L & 3L) == 2
+ assert new Long(-2L & 3L) == 2
+ Integer wi = 2
+ int pi = 2
+ assert new Integer(wi & 34) == 2
+ assert new Integer(pi & pi) == 2
+ assert new Integer(6 & 3) == 2
+ assert new Integer(-2 & 3) == 2
+ }
+ method()
+ '''
+ }
}