Rodolfo Yanke created GROOVY-10239:
--------------------------------------

             Summary: GroovyCastException when @CompileStatic and !in keyword 
are used together
                 Key: GROOVY-10239
                 URL: https://issues.apache.org/jira/browse/GROOVY-10239
             Project: Groovy
          Issue Type: Bug
          Components: Static compilation
    Affects Versions: 3.0.9
         Environment: macOs Big Sur 11.5.2
2,6 GHz 6-Core Intel Core i7
Java 11.0.11/16.0.1 (probably reproducible in other version)
            Reporter: Rodolfo Yanke


Dear colleagues,

I've recently updated my projects from 3.0.8 to 3.0.9 and I started getting 
some GroovyCastExceptions when trying to use *!in* keyword along with 
CompileStatic annotation:
{code:groovy}
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast 
object 'true' with class 'java.lang.Boolean' to class 'Xyz'
{code}
We realised that it only works on 3.0.9 if we remove the CompileStatic 
annotation(3.0.8 works with and without).

Here's an example of how to reproduce the exception:
{code:groovy}
import groovy.transform.CompileStatic

/**
 *  REMOVE @CompileStatic and the main method runs fine for both versions 3.0.8 
and 3.0.9.
 * 'Cannot cast object \'true\' with class \'java.lang.Boolean\' to class 
\'MyEnum\''
 *  @CompileStatic only works with 3.0.8
 */
@CompileStatic
class Groovy309Error {
    static void main(String[] args) {
        def myObj = new MyObj(status: MyEnum.A)
        List<MyObj> items = [myObj]
        def newItems = items.findAll { it.status !in [MyEnum.B] }
        println newItems
    }
}

enum MyEnum {
    A, B
}

class MyObj {
    MyEnum status
}{code}
 
Please, forgive me if I missed something on the bug checklist but I think this 
ticket belongs here.
Thank you in advance 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to