Created Cancelled
Let a constructor say what a list is for Third in the line of #138 and #139. `skip-calls-to` reads the call an expression is inside, and a data constructor was not one of them. A codec or a database column rejecting what it was handed says so by returning `Left` of a message assembled from pieces. The constructor is exactly the call that says what that list is for — the same role `fail` or `error` plays one application further out — so it should be nameable. ### Why not in `headFunctionName` Several operators use `headFunctionName` to decide what is an elidable or a swappable *call*, and a constructor is neither. Teaching it about constructors would change which mutants those produce, which is not the intent. The new `calleeName` is used only where enclosing calls are recorded, and falls back to the constructor's name at the `ConLikeTc` node GHC rewrites a constructor's `HsVar` into — the same node `BoolLit`, `ConstBool`, `MaybeOp` and `ConstConstructor` already read. ### What it is worth Without it, a message built inside an instance method can only be answered by asserting its wording in a test, since there is no binding for an `ANN` pragma to name. In the repository this came from that was eight messages, and the workaround cost eight extracted functions, eight pragmas and seven `ElideCall` entries. One `Left` entry replaces all of it. ### Asserted `Example.ListLitCallsLib.reportEither` is the case. Removing the `Left` entry fails `mutation-sydtest-mutation-example` with the `ListLit` and `ConstEmptyList` mutants on its message list; putting it back passes. Both directions were run.