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

18m55s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 18s 0s 0s 19s 18s
Eval 19s 16s 16s 36s 0s
Build 36s 0s 18m38s 19m14s 18m37s
Suite 18s 17s 18m55s 19m14s 18m56s

Timeline

Config Eval Build Compressed gap
0s20s30s