[ https://issues.apache.org/jira/browse/GROOVY-9093?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17118952#comment-17118952 ]
Eric Milles commented on GROOVY-9093: ------------------------------------- GROOVY-9292 looks similar...for closure access to fields and properties. > SC: subclass access to package-private or private field is not indicated as > an error > ------------------------------------------------------------------------------------ > > Key: GROOVY-9093 > URL: https://issues.apache.org/jira/browse/GROOVY-9093 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.16, 3.0.0-alpha-4, 2.5.6 > Reporter: Eric Milles > Priority: Major > > Consider the following: > {code:groovy} > package p > import groovy.transform.* > @CompileStatic class Main { > @PackageScope static final String CONST = 'value' > static main(args) { > new q.Sub().meth() > } > } > package q > import groovy.transform.* > @CompileStatic class Sub extends p.Main { > void meth() { > print CONST > } > } > {code} > This code compiles but throws an IllegalAccessError at run-time. Since a > subclass should not have access to it's parent's private or package-private > members (if located in a different package), there should be a compile-time > error like "Access to Main#CONST is forbidden @ line -1, column -1." > Replacing "@PackageScope" with "private" should get the same compile-time > error but produces "MissingPropertyExceptionNoStack: No such property: CONST > for class: q.Sub" at run-time. -- This message was sent by Atlassian Jira (v8.3.4#803005)