[ https://issues.apache.org/jira/browse/GROOVY-8283?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17921861#comment-17921861 ]
Eric Milles commented on GROOVY-8283: ------------------------------------- The draft PR implements dynamic and static read cases. The write cases are done for dynamic but incomplete for static compilation due to the handling for multiple setters. Does this look okay so far? Before dealing with setter checking, I’d like to know this is seen as a positive breaking change. > 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 > Assignee: Eric Milles > Priority: Major > Labels: breaking > > {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 (v8.20.10#820010)