Created Started Finished
By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Kill every mutation of the renderer
The renderer is a table and the layout is arithmetic over columns, so both
are wrong one entry and one character at a time, and the suite that was here
could not tell. 710 mutants, none surviving, where there were 166 before.
Most of it is exact text: every function, range function, aggregation,
operator, duration unit and matcher, written out both on one line and too
wide to fit, because what a query is written as when it breaks goes through a
different road from what it is written as when it does not. Then the
precedence table itself, at every adjacent pair and from both sides, since a
step of it that is wrong is a query that means something else.
Two of the mutants that survived were not worth a test, because they changed
nothing:
* the Applied branch of the layout put brackets around a call, which is an
atom and so is never the thing that needs them. That was dead code, and
it is gone rather than suppressed.
* three Validity instances ran genericValidate over a newtype whose only
field is a Word or a Text, whose validity is trivial. Those say what
they check and nothing more now.
precedence, operatorPrecedence, lowestPrecedence and atomPrecedence are
exported. How tightly something binds is a fair question to ask a library
that puts the brackets in, and asking it directly is what pins the table
rather than only its effect.