0f9cbb4e

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.

Total

1h53m37s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 45s 0s 0s 45s 45s
Eval 45s 12s 12s 58s 0s
Build 58s 5m04s 1h53m05s 1h54m04s 1h50m02s
Deploy 1h54m04s 18s 18s 1h54m22s 9s
Suite 45s 5m37s 1h53m37s 1h54m22s 1h50m57s

Timeline

Config Eval Build Deploy Failed Retried Compressed gap
0s1h51m1h51m1h52m1h52m1h52m1h53m1h53m1h53m1h54m1h54m