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)