Repository: groovy
Updated Branches:
  refs/heads/GROOVY_2_4_X a132ad893 -> 6f5dfffb0


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/6f5dfffb
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/6f5dfffb
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/6f5dfffb

Branch: refs/heads/GROOVY_2_4_X
Commit: 6f5dfffb0b47ebd720f2669ea516b8b359e546d0
Parents: a132ad8
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:34:55 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/6f5dfffb/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/6f5dfffb/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
+        '''
+    }
 }
 

Reply via email to