Created Started Finished
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.