You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Shil Sinha (JIRA)" <ji...@apache.org> on 2015/10/18 23:16:05 UTC

[jira] [Comment Edited] (GROOVY-7631) @CompileStatic compiles 0 != null to false

    [ 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:16 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


 


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. 

> @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)