[
https://issues.apache.org/jira/browse/GROOVY-11840?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18051893#comment-18051893
]
Eric Milles commented on GROOVY-11840:
--------------------------------------
There is a gap in the checks. If expression type is primitive there is a
conversion. If inferred type is Boolean (wrapper) there is a conversion. If
inferred type is final and does not declare asBoolean the value is tested for
null.
When the expression type and inferred type are different (as in this case) it
falls through and considers primitives as final.
> Regression in if statement for boolean var in groovy 5
> ------------------------------------------------------
>
> Key: GROOVY-11840
> URL: https://issues.apache.org/jira/browse/GROOVY-11840
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 5.0.3
> Reporter: Andriy Rysin
> Assignee: Eric Milles
> Priority: Major
> Attachments: Test.groovy
>
>
> In groovy 5 "if( booleanVar )" evaluates to true even if boolean is false.
> See test example. On groovy4 both if statements are false, on groovy5 the
> first one is true.
> {code:groovy}
> @groovy.transform.CompileStatic
> class Test {
> private static final boolean USE_SUFFIX_2 = false
> static main(String[] args) {
> ['1', '2', '3'].each { String line ->
> if( USE_SUFFIX_2 ) {
> println "Wrong 1!"
> }
> if( USE_SUFFIX_2 == true ) {
> println "Wrong 2!"
> }
> }
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)