[
https://issues.apache.org/jira/browse/GROOVY-7970?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Paul King resolved GROOVY-7970.
-------------------------------
Resolution: Fixed
Fix Version/s: 2.5.0-beta-1
No further feedback - leaving as a 2.5 only fix for now.
> Can't call private method from outer class when using anonymous inner classes
> and @CS
> -------------------------------------------------------------------------------------
>
> Key: GROOVY-7970
> URL: https://issues.apache.org/jira/browse/GROOVY-7970
> Project: Groovy
> Issue Type: Bug
> Affects Versions: 2.4.7
> Reporter: Graeme Rocher
> Assignee: Paul King
> Fix For: 2.5.0-beta-1
>
>
> This example:
> {code}
> import groovy.json.*
> import groovy.transform.*
> @CompileStatic
> class Bar {
> private Writable renderTemplate(Object o, Map args) {
>
> }
> def foo(Map map, Map arguments) {
>
> def writable = new Writable() {
> @Override
> Writer writeTo(Writer out) throws IOException {
> StreamingJsonBuilder builder = new StreamingJsonBuilder(out)
> builder.call {
> for(key in map.keySet()) {
> def o = map.get(key)
> Writable writable = renderTemplate((Object)o,
> arguments)
> call(key.toString(), writable)
> }
> }
> return out
> }
> }
> }
> }
> writable = new Bar().foo([one:'two'],[foo:'bar'])
> sw = new StringWriter()
> writable.writeTo(sw)
> println sw
> {code}
> Results in a compilation error:
> {code}
> [Static type checking] - Cannot find matching method
> Bar$1#renderTemplate(java.lang.Object, java.util.Map). Please check if the
> declared type is right and if the method exists.
> at line: 18, column: 45
> {code}
> If you attempt to use {{Bar.this}}:
> {code}
> Writable writable = Bar.this.renderTemplate((Object)o, arguments)
> {code}
> The result is a VerifierError
> {code}
> java.lang.VerifyError: (class: Bar$1$_writeTo_closure1, method: doCall
> signature: (Ljava/lang/Object;)Ljava/lang/Object;) Incompatible argument to
> function
> at Bar$1.writeTo(ConsoleScript11:15)
> at groovy.lang.Writable$writeTo.call(Unknown Source)
> at
> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
> at
> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)