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 28m56s 3s 3s 28m59s 28m56s
Eval 11h48m50s 5m19s 5m19s 11h54m09s 11h19m50s
Build 12h32m38s 36s 3m32s 12h36m10s 41m24s
Suite 28m56s 5m59s 12h07m14s 12h36m10s 12h30m11s

Timeline

0s11h49m11h50m11h51m11h52m11h53m11h54m