You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Pascal Schumacher (JIRA)" <ji...@apache.org> on 2016/02/22 21:53:18 UTC

[jira] [Updated] (GROOVY-7762) Static inner classes not visible to child classes

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

Pascal Schumacher updated GROOVY-7762:
--------------------------------------
    Description: 
If both the parent class and the child are in the same file or project (i.e. they are being compiled together), this works; however, if the parent is compiled into a separate JAR, the child class is unable to see the parents inner classes.

Example:

{code}class X {
    static class Y {}
}{code}

Compile X into a separate JAR.

{code}class Z extends X {
    Z() {
        Y y = new Y();
    }
}{code}

Compiling Z will cause an error.

  was:
Classes that extend another class with static inner classes are unable to see the inner classes without including the parent class name as part of the class reference.

Example:

{code}
class X {
    static class Y {}
}

class Z extends X {
    Z() {
        Y y = new Y();
    }
}
{code}

The compiler fails to compile "Z" saying it cannot resolve class "Y"; however, it will accept "X.Y y = new X.Y()".

The child class should not have to reference the parent class directly to get to its inner classes, should it?


> Static inner classes not visible to child classes
> -------------------------------------------------
>
>                 Key: GROOVY-7762
>                 URL: https://issues.apache.org/jira/browse/GROOVY-7762
>             Project: Groovy
>          Issue Type: Sub-task
>          Components: class generator
>    Affects Versions: 2.1.6, 2.2.0-beta-1, 2.1.7, 2.2.0, 2.4.0-beta-3
>            Reporter: Kenneth Gendron
>
> If both the parent class and the child are in the same file or project (i.e. they are being compiled together), this works; however, if the parent is compiled into a separate JAR, the child class is unable to see the parents inner classes.
> Example:
> {code}class X {
>     static class Y {}
> }{code}
> Compile X into a separate JAR.
> {code}class Z extends X {
>     Z() {
>         Y y = new Y();
>     }
> }{code}
> Compiling Z will cause an error.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)