Daniil Ovchinnikov created GROOVY-8051:
------------------------------------------
Summary: Reference outer class property within inner class closure
Key: GROOVY-8051
URL: https://issues.apache.org/jira/browse/GROOVY-8051
Project: Groovy
Issue Type: Bug
Components: Compiler, Static compilation, Static Type Checker
Affects Versions: 2.4.7
Reporter: Daniil Ovchinnikov
{code}
@CompileStatic // works without this @CompileStatic
class Outer {
def foo = 1
Inner createInner() { new Inner() }
class Inner {
Closure createClosure() {
return { foo }
}
}
}
@CompileStatic
class Main {
static void main(String[] args) {
def i = new Outer().createInner()
def cl = i.createClosure()
println cl()
}
}
{code}
Fail in runtime with:
{noformat}
Exception in thread "main"
org.codehaus.groovy.runtime.typehandling.GroovyCastException:
Cannot cast object 'Outer$Inner@23e028a9' with class 'Outer$Inner' to class
'Outer'
at
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405)
at
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319)
at
org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232)
at
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603)
at Outer$Inner$_createClosure_closure1.doCall(innerclassestest.groovy)
at Outer$Inner$_createClosure_closure1.call(innerclassestest.groovy)
at Main.main(innerclassestest.groovy:23)
{noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)