You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "César Izurieta (JIRA)" <ji...@apache.org> on 2015/07/20 16:31:04 UTC

[jira] [Created] (GROOVY-7512) Cannot call Trait method from Closure when using static compilation

César Izurieta created GROOVY-7512:
--------------------------------------

             Summary: Cannot call Trait method from Closure when using static compilation
                 Key: GROOVY-7512
                 URL: https://issues.apache.org/jira/browse/GROOVY-7512
             Project: Groovy
          Issue Type: Bug
          Components: Compiler, Static compilation, Static Type Checker
    Affects Versions: 2.4.4
            Reporter: César Izurieta
            Assignee: Cédric Champeau


When running:

{code:title=test.groovy|borderStyle=solid}
class X {
    Closure action = {}
}

trait T {

    void say(String text) {
        println text
    }

    @groovy.transform.CompileStatic
    X getX() {
        new X(action: {
            say "Hello!"
        })
    }

}

class A implements T {
}

new A().x.action()
{code}

The following exception is thrown:

{code}
Caught: java.lang.ClassCastException: java.lang.Class cannot be cast to T
java.lang.ClassCastException: java.lang.Class cannot be cast to T
	at T$Trait$Helper$_getX_closure1.doCall(Test2.groovy:14)
	at T$Trait$Helper$_getX_closure1.doCall(Test2.groovy)
	at Test2.run(Test2.groovy:23)
{code}

The commit that is causing this seems to be: 1bbed25aa3a08bc0cb7e14e49a1e7c2b82f21a26



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)