bd685cc5

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Mutation: per-mutation mitigation hints + binding name in manifest & report

Replace the operator alternative 5-tuple with a MutationAlt record carrying
an extra optional mitigation message (mutAltMitigation), so an operator can
explain how a mutation it produced may be mitigated.  All operators are
converted; only SwitchFunctionArguments sets a message (pointing at
skip-calls-to for the symmetric-function case).

Add two optional fields to the manifest record (and the augmented manifest):
  * mitigation  -- the operator's hint, carried through to the report.
  * binding     -- the enclosing top-level binding name, threaded through
                   InstrumentEnv during instrumentation.

The mutation run report now prints, under each surviving mutation, the exact
disable annotation for it ({-# ANN <binding> ("DisableMutation: <Op>" ...) #-})
and any mitigation hint, via the new survivorMitigationLines.

Bumps sydtest to 0.26.1.0 (new export, report output) and documents the
plugin changes.  Goldens regenerated; example gen specs unchanged (all swap
mutants still killed).

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 1s 1s 1s 3s 1s
Eval 4m23s 40s 40s 5m03s 4m19s
Build 21m57s 27m50s 12m43s 34m41s 16m57s
Suite 1s 28m32s 34m39s 34m41s 21m18s

Timeline

0s5m22m23m24m25m26m27m28m29m30m31m32m33m34m