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)