| package groovy.bugs |
| |
| /** |
| * TODO: GROOVY-1059 |
| * |
| * Accessible to a closure attribute of an abject with the operator ".@". |
| * For examples, all of the expressions |
| * |
| * object.@closure() |
| * object.@closure.call() |
| * object.@closure.doCall() |
| * (object.@closure)() |
| * |
| * have the same meaning. |
| * |
| * @author John Wilson |
| * @author Pilho Kim |
| */ |
| |
| class Groovy1059_Bug extends GroovyTestCase { |
| |
| void testClosureAsAttribute() { |
| def x = new Groovy1059Foo() |
| |
| println( x.say() ) |
| println( (x.@say)() ) |
| println( x.@say() ) // TODO: Groovy-1059 should work |
| println( x.@say.call() ) |
| println( x.@say.doCall() ) |
| println( x.@say2() ) |
| |
| assert "I am a Method" == x.say() |
| assert "I am a Method" == x.@say2() |
| assert "I am a Closure" == (x.@say)() |
| assert "I am a Closure" == x.@say() |
| assert x.@say() == (x.@say)() |
| assert x.@say() == x.@say.call() |
| assert x.@say() == x.@say.doCall() |
| assert x.@say() != x.say() |
| assert x.@say2() == x.say() |
| } |
| |
| } |
| |
| class Groovy1059Foo { |
| |
| def public say = { it -> return "I am a Closure" } |
| def public say2 = this.&say |
| |
| public Object say() { |
| return "I am a Method" |
| } |
| } |