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 + ''' + } }