By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Mutation: add SwitchFunctionArguments operator
Add a SwitchFunctionArguments mutation operator that, at a prefix function
or constructor application, swaps every pair of value arguments that have
the same type. The same-type precondition keeps each swapped application
well-typed.
To keep the output honest the operator:
* fires only on the maximal application spine (via instrumentEnvAppDepth),
so a curried sub-application does not re-emit a swap the full spine
already covers;
* skips pairs whose arguments have identical source text (the swap would
be a no-op and the mutant unkillable).
Rendering uses a new SwapSpans source delta plus a pure, unit-tested
applySwapSpans renderer.
Adds an Example.SwitchArgsLib example and gen spec that kill all the swap
mutants, and disables the operator on the symmetric majorityOf5Wrapper
(whose swaps are equivalent mutants). Goldens regenerated; plugin bumped to
0.4.0.0.