-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Minor
-
Component/s: groovy-plugin
-
None
-
Environment:Jenkins 2.89.4
Closure composition works as expected in a regular Groovy shell, and also in the Jenkins script console; but if I run it in a pipeline I get odd results. My assumption is that however closures work in Pipeline, the leftshift / rightshift operators aren't overloaded to perform composition, but that's just a guess and I really don't know what I'm talking about.
I think it'd be cool if it worked the same way ![]()
Example (adapted from the Groovy docs):
def plus2 = { it + 2 }
def times3 = { it * 3 }
def times3plus2 = plus2 << times3
println "${times3plus2(3)} == 11"
println "${times3plus2(4)} == ${plus2(times3(4))}"
def plus2times3 = times3 << plus2
println "${plus2times3(3)} == 15"
println "${plus2times3(5)} == ${times3(plus2(5))}"
// reverse composition
println "${times3plus2(3)} == ${(times3 >> plus2)(3)}"
Pipeline output (incorrect):

Script console (correct):
