Jeff Scott Brown created GROOVY-7891:
----------------------------------------
Summary: Possible Problem With Closures Calling Private Methods In
A Trait
Key: GROOVY-7891
URL: https://issues.apache.org/jira/browse/GROOVY-7891
Project: Groovy
Issue Type: Bug
Affects Versions: 2.4.5
Reporter: Jeff Scott Brown
It looks like a closure defined in a trait does not have access to private
methods defined in the trait. I am not sure if this is broken or not.
{code}
trait SomeTrait {
void somePublicMethod() {
def someClosure = {
somePrivateMethod()
}
someClosure()
}
private void somePrivateMethod() {}
}
{code}
{code}
class Demo implements SomeTrait {
static void main(args) {
new Demo().somePublicMethod()
}
}
{code}
{code}
$ groovy Demo
Caught: groovy.lang.MissingMethodException: No signature of method:
Demo.somePrivateMethod() is applicable for argument types: (Demo) values:
[Demo@2473d930]
groovy.lang.MissingMethodException: No signature of method:
Demo.somePrivateMethod() is applicable for argument types: (Demo) values:
[Demo@2473d930]
at
SomeTrait$Trait$Helper$_somePublicMethod_closure1.doCall(SomeTrait.groovy:5)
at
SomeTrait$Trait$Helper$_somePublicMethod_closure1.doCall(SomeTrait.groovy)
at SomeTrait$Trait$Helper.somePublicMethod(SomeTrait.groovy:7)
at SomeTrait$Trait$Helper$somePublicMethod.call(Unknown Source)
at Demo.somePublicMethod(Demo.groovy)
at SomeTrait$somePublicMethod.call(Unknown Source)
at Demo.main(Demo.groovy:3)
{code}
Please advise. Thanks for the input.
https://github.com/grails/grails-core/issues/10060
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)