[ https://issues.apache.org/jira/browse/GROOVY-7631?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14962602#comment-14962602 ]
Shil Sinha edited comment on GROOVY-7631 at 10/18/15 9:29 PM: -------------------------------------------------------------- I tested this on 2.0.0, 2.0.8, 2.1.9, 2.2.2 and 2.3.11; the behavior is the same across those versions. Edit: This seems to be an issue for all primitive values, not just 0. Example: {code} @groovy.transform.CompileStatic void test() { // these all fail assert true != null assert (byte) 1 != null assert (short) 1 != null assert 1 != null assert 1L != null assert 1f != null assert 1d != null assert (char) 1 != null } test() {code} If the types above are replaced with their wrapper types, the test passes. The relevant code appears to be in CompareToNullExpression.visit method, where the primitive operand is popped from the stack and a 0 is pushed, followed by a Boolean.valueOf call. was (Author: shils): I tested this on 2.0.0, 2.0.8, 2.1.9, 2.2.2 and 2.3.11; the behavior is the same across those versions. Edit: This seems to be an issue for all primitive values, not just 0. Example: {code} @groovy.transform.CompileStatic void test() { // these all fail assert true != null assert (byte) 1 != null assert (short) 1 != null assert 1 != null assert 1L != null assert 1f != null assert 1d != null assert (char) 1 != null } test() {code} If the types above are replaced with their wrapper types, the test passes. The relevant code appears to be in CompareToNullExpression.visit > @CompileStatic compiles 0 != null to false > ------------------------------------------ > > Key: GROOVY-7631 > URL: https://issues.apache.org/jira/browse/GROOVY-7631 > Project: Groovy > Issue Type: Bug > Components: Static compilation > Affects Versions: 2.4.5 > Reporter: Kevin Gu > Assignee: Cédric Champeau > > import groovy.transform.*; > // @CompileStatic > class Bug { > void exec() { > println 0 != null > } > } > new Bug().exec() > The above code prints "true". But when @CompileStatic is umcommented, it > prints "false". -- This message was sent by Atlassian JIRA (v6.3.4#6332)