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 2016/05/25 10:34:39 UTC
groovy git commit: GROOVY-7841: Assert fails when accessing
particular primitive values with @CompileStatic
Repository: groovy
Updated Branches:
refs/heads/master a2565bebb -> 99f40916f
GROOVY-7841: Assert fails when accessing particular primitive values with @CompileStatic
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/99f40916
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/99f40916
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/99f40916
Branch: refs/heads/master
Commit: 99f40916ffdc4d3a049cd9ae7fb37f34b8503cbb
Parents: a2565be
Author: paulk <pa...@asert.com.au>
Authored: Tue May 24 21:52:12 2016 +1000
Committer: paulk <pa...@asert.com.au>
Committed: Wed May 25 20:33:59 2016 +1000
----------------------------------------------------------------------
.../sc/transformers/BooleanExpressionTransformer.java | 10 +++++++---
.../groovy/classgen/asm/sc/BugsStaticCompileTest.groovy | 11 +++++++++--
2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/99f40916/src/main/org/codehaus/groovy/transform/sc/transformers/BooleanExpressionTransformer.java
----------------------------------------------------------------------
diff --git a/src/main/org/codehaus/groovy/transform/sc/transformers/BooleanExpressionTransformer.java b/src/main/org/codehaus/groovy/transform/sc/transformers/BooleanExpressionTransformer.java
index 4a81aa5..e60c2cb 100644
--- a/src/main/org/codehaus/groovy/transform/sc/transformers/BooleanExpressionTransformer.java
+++ b/src/main/org/codehaus/groovy/transform/sc/transformers/BooleanExpressionTransformer.java
@@ -134,15 +134,19 @@ public class BooleanExpressionTransformer {
// int on stack
} else if (top.equals(ClassHelper.long_TYPE)) {
MethodVisitor mv = controller.getMethodVisitor();
- mv.visitInsn(L2I);
+ mv.visitInsn(LCONST_0);
+ mv.visitInsn(LCMP);
controller.getOperandStack().replace(ClassHelper.boolean_TYPE);
} else if (top.equals(ClassHelper.float_TYPE)) {
MethodVisitor mv = controller.getMethodVisitor();
- mv.visitInsn(F2I);
+ mv.visitInsn(F2D);
+ mv.visitInsn(DCONST_0);
+ mv.visitInsn(DCMPG);
controller.getOperandStack().replace(ClassHelper.boolean_TYPE);
} else if (top.equals(ClassHelper.double_TYPE)) {
MethodVisitor mv = controller.getMethodVisitor();
- mv.visitInsn(D2I);
+ mv.visitInsn(DCONST_0);
+ mv.visitInsn(DCMPG);
controller.getOperandStack().replace(ClassHelper.boolean_TYPE);
}
return;
http://git-wip-us.apache.org/repos/asf/groovy/blob/99f40916/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy
----------------------------------------------------------------------
diff --git a/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy b/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy
index 617e375..b0fd07f 100644
--- a/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy
+++ b/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy
@@ -22,8 +22,6 @@ import groovy.transform.stc.BugsSTCTest
/**
* Unit tests for static type checking : bugs.
- *
- * @author Cedric Champeau
*/
class BugsStaticCompileTest extends BugsSTCTest implements StaticCompilationTestSupport {
@@ -1439,5 +1437,14 @@ println someInt
assert foo?.bar < 7
'''
}
+
+ // GROOVY-7841
+ void testAssertionOfNonZeroPrimitiveEdgeCases() {
+ assertScript '''
+ assert 4294967296
+ assert 0.1f
+ assert 0.1d
+ '''
+ }
}