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 2017/02/01 23:19:06 UTC
[jira] [Closed] (GROOVY-7938) inconsistent access of methods in
outer class
[ https://issues.apache.org/jira/browse/GROOVY-7938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-7938.
-----------------------------
> inconsistent access of methods in outer class
> ---------------------------------------------
>
> Key: GROOVY-7938
> URL: https://issues.apache.org/jira/browse/GROOVY-7938
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.4.7
> Reporter: Paul King
> Assignee: Paul King
> Fix For: 2.4.8
>
>
> Groovy handles access to outer instance and static methods from inner classes but not nested (i.e. static) ones. The following code illustrates the problem:
> {code}class Outer {
> static Integer fooCount = 0
> Integer barCount = 0
> static void incFoo() { fooCount++ }
> void incBar() { barCount++ }
> static class Nested {
> static void nestedIncFoo() { incFoo() }
> }
> Inner innerFactory() { new Inner() }
> class Inner { }
> }
> Outer.incFoo()
> //Outer.Nested.nestedIncFoo() // => MME
> assert Outer.fooCount == 1 // but should be 2 if no MME
> new Outer().with {
> incBar()
> incFoo()
> innerFactory().with {
> incBar()
> incFoo()
> }
> assert barCount == 2
> assert fooCount == 3 // but should be 4 if no MME
> }
> {code}
> After the fix, the following is expected to work:
> {code}
> class Outer {
> static Integer fooCount = 0
> Integer barCount = 0
> static void incFoo() { fooCount++ }
> void incBar() { barCount++ }
> static class Nested {
> static void nestedIncFoo() { incFoo() }
> }
> Inner innerFactory() { new Inner() }
> class Inner { }
> }
> Outer.incFoo()
> Outer.Nested.nestedIncFoo()
> assert Outer.fooCount == 2
> new Outer().with {
> incBar()
> incFoo()
> innerFactory().with {
> incBar()
> incFoo()
> }
> assert barCount == 2
> assert fooCount == 4
> }
> {code}
> Basically the commented out line should work.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)