You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Matthew Moss (JIRA)" <ji...@apache.org> on 2018/02/19 21:54:00 UTC
[jira] [Commented] (GROOVY-3073) Private inheritance bug: Closure
accessing private method
[ https://issues.apache.org/jira/browse/GROOVY-3073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16369559#comment-16369559 ]
Matthew Moss commented on GROOVY-3073:
--------------------------------------
Is this case the same? Or should this be a separate issue?
Of note: If {{Bar}} is annotated with {{@CompileStatic}}, the call to {{foo.run()}} succeeds.
{code:java}
class Bar {
def run = {
hello()
}
private hello() {
println "hello"
}
}
class Foo extends Bar { }
foo = new Foo()
foo.run()
{code}
> Private inheritance bug: Closure accessing private method
> ---------------------------------------------------------
>
> Key: GROOVY-3073
> URL: https://issues.apache.org/jira/browse/GROOVY-3073
> Project: Groovy
> Issue Type: Sub-task
> Components: class generator
> Affects Versions: 1.5.6
> Environment: Windows XP SP 2
> Eclipse 3.3 & groovy-all-1.5.6.jar
> Reporter: Raoul Becke
> Priority: Major
>
> Even the inheritance is correct - the following sample returns a:
> {color:red}
> Exception in thread "main" groovy.lang.MissingMethodException: No signature of method: test.Child.parentMethodB() is applicable for argument types: () values: {}
> {color}
> {code:title=Parent.java|borderStyle=solid}
> package test
> public class Parent{
> private String parentMethodB(){
> return "parentMethodB";
> }
> protected String parentMethodC(){
> def closure={
> return parentMethodB()}
> return closure()
> }
> }
> {code}
> {code:title=Child.java|borderStyle=solid}
> package test
> public class Child extends Parent{
> public static void main(def args){
> Child c = new Child();
> println(c.parentMethodC())
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)