e9ebb1b2

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

Let a constructor say what a list is for

skip-calls-to reads the call an expression is inside, and a data constructor
was not one of them. A list held by a constructor is named by that constructor
exactly as an argument is named by the function it is passed to, so a
constructor should be nameable too.

Read in the enclosing-call recording rather than in headFunctionName. Several
operators use that function to decide what is an elidable or a swappable call,
and a constructor is neither, so teaching it about constructors would change
which mutants those produce. The new calleeName falls back to the constructor's
name at the ConLikeTc node GHC rewrites a constructor's HsVar into, which is
the same node BoolLit, ConstBool, MaybeOp and ConstConstructor already read.

Example.ListLitCallsLib.reportCodes is the case, answering with a constructor
of that module's own rather than one of Either's, so that what the config
skips is one named constructor and not every Left in the suite. Asserted both
ways: removing the entry fails the check with the ListLit and ConstEmptyList
mutants on its list, and putting it back passes.

Total

51m46s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 3m03s 0s 0s 3m04s 3m03s
Eval 3m04s 16s 16s 3m20s 0s
Build 3m19s 4m34s 51m16s 54m36s 47m31s
Deploy 54m36s 13s 13s 54m49s 0s
Suite 3m03s 5m04s 51m46s 54m49s 50m34s

Timeline

Config Eval Build Deploy Compressed gap
0s3m20s51m51m20s51m40s52m52m20s52m40s53m53m20s53m40s54m54m20s54m40s