I accidentally discovered that Groovy 2, in contrast to Java, allows you to apply the ++ and -- operators to the left and right sides of variables simultaneously.

int i = 0
++i++
assert i == 1

and you can also chain them in a single statement provided you apply parens

int i = 0
((i++)++)++
assert i == 1
++(++(++i))
assert i == 2
++(++(++i++)++)++
assert i == 3

I can understand allowing the chaining syntax, considering that it's roughly equivalent to next().next().next(), but as far as I reckon, being able to use these operators in such a way has no practical purpose.

I haven't tried this code with the Groovy 3 parser yet--I was wondering if it supported the ++ and -- operators similarly.

-Joe