You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Eric Milles (JIRA)" <ji...@apache.org> on 2019/04/18 18:15:01 UTC
[jira] [Created] (GROOVY-9093) SC: subclass access to
package-private or private field is not indicated as an error
Eric Milles created GROOVY-9093:
-----------------------------------
Summary: 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.5.6, 3.0.0-alpha-4, 2.4.16
Reporter: Eric Milles
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
(v7.6.3#76005)