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.
GitHub
Time to Start Worker time Duration Time to finish Idle
Config - - - - 1m02s
Eval - - - - -
Build - - - - -
Suite - - - - 1m02s