fe6d9ba4

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

Don't mutate compiler-generated code in the instrumenter

Stock- and anyclass-derived instance methods (whose MatchGroup carries a
Generated origin) and the dictionary/evidence VarBinds the typechecker
materialises for an instance (e.g. $dShow, $dEnum) were being instrumented,
with source spans pointing at the deriving clause or the instance head. That
produced nonsense diffs like `deriving (Show, (\_ _ -> False), ...)` and
`instance (\_ -> []) where`, and the resulting mutants — living in generated
code rather than the user's own source — could never be killed by a test, so
they surfaced as permanently uncovered mutations.

Skip FunBinds with a Generated MatchGroup origin and evidence VarBinds. Add
Example.DerivingLib as a regression test (its manifest must stay empty) and
bump sydtest-mutation-plugin to 0.2.1.0.

Suite timing

Time to Start Worker time Duration Time to finish Idle
Config 27m59s 7s 7s 28m07s 27m59s
Eval 29m05s 3m34s 34m08s 1h03m14s 32m21s
Build 12h23m05s 5m49s 9m32s 12h32m37s 11h23m33s
Suite 27m59s 9m31s 12h04m38s 12h32m37s 12h23m54s

Timeline

0s28m1h1m1h2m1h3m12h25m12h26m12h27m12h28m12h29m