[ https://issues.apache.org/jira/browse/GROOVY-3395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Paul King closed GROOVY-3395. ----------------------------- > calling binding variable as function fails to try object's call() method > ------------------------------------------------------------------------ > > Key: GROOVY-3395 > URL: https://issues.apache.org/jira/browse/GROOVY-3395 > Project: Groovy > Issue Type: Bug > Components: groovy-runtime > Affects Versions: 1.6 > Environment: Red Hat Linux 5 with groovy 1.6.0 binary distribution; > also reproduced on Debian 5.0 > Reporter: Jay Berkenbilt > Fix For: 2.5.0-alpha-1 > > Attachments: GROOVY3395.groovy > > > From a script, if x is a variable in the binding, calling x() appears not to > try calling x's call method, at least in some cases. (It does work for > closures, though.) The following example code illustrates the behavior > fully. When running the code, it catches the MissingMethodException and > print "oops -- didn't try c1.call()". > If this is intended behavior, I'd appreciate an explanation. I apologize if > this is known. I searched JIRA but didn't find anything. I suspect my > indentation will not be preserved here... > {code:Java} > class Callable > { > Object call() > { > 'Callable.call' > } > } > Callable c = new Callable() > assert 'Callable.call' == c() > def binding = new Binding() > binding.c1 = c > binding.c2 = { c() } > def shell = new GroovyShell(binding) > try > { > assert 'Callable.call' == shell.evaluate('c1()') > } > catch (MissingMethodException) > { > println "oops -- didn't try c1.call()" > } > assert 'Callable.call' == shell.evaluate('c1.call()') > assert 'Callable.call' == shell.evaluate('c2()') > {code} -- This message was sent by Atlassian JIRA (v6.3.15#6346)