| import org.codehaus.groovy.classgen.TestSupport |
| |
| /** |
| * @version $Revision$ |
| */ |
| class NestedClosure2Bug extends TestSupport { |
| |
| f |
| |
| void testFieldBug() { |
| closure = { |
| return { |
| f = 123 |
| return null |
| } |
| } |
| value = closure() |
| value = value() |
| assert f == 123 |
| } |
| |
| void testBugOutsideOfScript() { |
| a = 123 |
| b = 456 |
| closure = { |
| println b |
| c = 999 |
| return { |
| f = 2222111 |
| |
| println f |
| |
| println c |
| d = 678 |
| return { |
| println f |
| assert f == 2222111 |
| println d |
| return a |
| } |
| } |
| } |
| c2 = closure() |
| c3 = c2() |
| value = c3() |
| |
| assert f == 2222111 |
| assert value == 123 |
| } |
| |
| void testBug() { |
| assertScript """ |
| a = 123 |
| closure = { |
| return { |
| return { |
| return a |
| } |
| } |
| } |
| c2 = closure() |
| c3 = c2() |
| value = c3() |
| |
| assert value == 123 |
| """ |
| } |
| } |