Repository: incubator-groovy Updated Branches: refs/heads/GROOVY_2_4_X e725edbeb -> b536299f5
GROOVY-7631: If p is a primitive value, p != null returns false when statically compiled (closes #148) Project: http://git-wip-us.apache.org/repos/asf/incubator-groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-groovy/commit/b536299f Tree: http://git-wip-us.apache.org/repos/asf/incubator-groovy/tree/b536299f Diff: http://git-wip-us.apache.org/repos/asf/incubator-groovy/diff/b536299f Branch: refs/heads/GROOVY_2_4_X Commit: b536299f5ec1ff860e710e0a18c4adea190ec38e Parents: e725edb Author: Shil S <shil.si...@gmail.com> Authored: Sun Oct 18 18:09:05 2015 -0400 Committer: pascalschumacher <pascalschumac...@gmx.net> Committed: Mon Oct 19 18:27:37 2015 +0200 ---------------------------------------------------------------------- .../sc/transformers/CompareToNullExpression.java | 2 +- .../classgen/asm/sc/BugsStaticCompileTest.groovy | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/b536299f/src/main/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java b/src/main/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java index c082031..723be81 100644 --- a/src/main/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java +++ b/src/main/org/codehaus/groovy/transform/sc/transformers/CompareToNullExpression.java @@ -62,7 +62,7 @@ public class CompareToNullExpression extends BinaryExpression implements Opcodes ClassNode top = controller.getOperandStack().getTopOperand(); if (ClassHelper.isPrimitiveType(top)) { controller.getOperandStack().pop(); - mv.visitInsn(ICONST_0); + mv.visitInsn(equalsNull ? ICONST_0 : ICONST_1); controller.getOperandStack().push(ClassHelper.boolean_TYPE); return; } http://git-wip-us.apache.org/repos/asf/incubator-groovy/blob/b536299f/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 922448e..1e36507 100644 --- a/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy +++ b/src/test/org/codehaus/groovy/classgen/asm/sc/BugsStaticCompileTest.groovy @@ -1410,5 +1410,21 @@ println someInt new A() ''' } + + // GROOVY-7631 + void testPrimitiveNotEqualNullShouldReturnTrue() { + assertScript ''' + assert false != null + assert true != null + assert (byte) 1 != null + assert (short) 1 != null + assert 0 != null + assert 1 != null + assert 1L != null + assert 1f != null + assert 1d != null + assert (char) 1 != null + ''' + } }