You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Paul King (Jira)" <ji...@apache.org> on 2020/11/21 07:20:00 UTC

[jira] [Updated] (GROOVY-9093) SC: subclass access to package-private or private field is not indicated as an error

     [ https://issues.apache.org/jira/browse/GROOVY-9093?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Paul King updated GROOVY-9093:
------------------------------
    Fix Version/s: 3.0.7
                   2.5.14

> 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
>            Assignee: Eric Milles
>            Priority: Major
>             Fix For: 2.5.14, 3.0.7, 4.0.0-alpha-2
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> 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)