4e82a1f7

Created Started 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.
PR #140