You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Daniil Ovchinnikov (JIRA)" <ji...@apache.org> on 2017/08/10 10:16:00 UTC
[jira] [Created] (GROOVY-8283) Field shadowing not considered in
STC
Daniil Ovchinnikov created GROOVY-8283:
------------------------------------------
Summary: Field shadowing not considered in STC
Key: GROOVY-8283
URL: https://issues.apache.org/jira/browse/GROOVY-8283
Project: Groovy
Issue Type: Bug
Components: Static compilation, Static Type Checker
Affects Versions: 2.4.12
Reporter: Daniil Ovchinnikov
{code}
import groovy.transform.CompileStatic
@CompileStatic class A {}
@CompileStatic class B {}
@CompileStatic class Parent {
protected A ff = new A()
A getFf() { ff }
}
@CompileStatic class Child extends Parent {
protected B ff = new B()
}
@CompileStatic class Usage extends Child {
def test() {
println ff // A@id
println getFf() // A@id
println this.@ff // B@id
}
def test2() {
I.wantsB(ff) // ScriptBytecodeAdapter.castToType(((Usage)this).getFf(), B.class)) is generated (wrong)
I.wantsB(getFf()) // [STC] - Cannot find matching method I#wantsB(A)
I.wantsB(this.@ff) // [STC] - Cannot find matching method I#wantsB(A) (wrong)
}
}
@CompileStatic class I {
static void wantsB(B b) {}
}
new Usage().test()
{code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)