Created Started Finished
By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Let ConstEmptyList be skipped by the call its list is an argument of ListLit already takes skip-calls-to, for the reason that a list holding the pieces of a message is a list nobody asserts the elements of, so shrinking it yields a mutant that can only be killed by pinning wording. ConstEmptyList reaches the same lists from the other side, by their type rather than their syntax, and had no way to be told the same thing. The key means the same and matches the same way, any enclosing call rather than only the immediate one, which is what makes it usable: the call such a list is the immediate argument of is always mconcat or unwords, never the function that says what the message is for. What an ANN pragma cannot do is the reason this is worth having rather than annotating the binding. A message built inside an instance method has no binding to annotate, and codecs, PersistField instances and job handlers are all written that way. Example.ListLitCallsLib is now the test for both operators and carries no ANN pragma at all: the three it had were disabling ConstEmptyList on the very lists this key is about, and one shared skip-calls-to entry answers both. That also makes it the check on a dead disable target, since a pragma naming an operator with no remaining mutant fails. Asserted by removing the entry: the check fails with the two ConstEmptyList mutants in reportDollar, and passes with it.