84948e9c

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Say each of the three things once

A diagnostic prints the finding message, then the rule text under the
marker, then the rule why as a note. Every rule was answering the same
question in all three: the message told the reader what to do instead,
which is what the marker already says, and the why then said it a third
time at length. A reader stopped by an Eq finding read "derive it
instead", "Eq is derived", and a paragraph arguing for deriving.

Give each field one job.

The finding message names what was found here, and only that. Where the
rule knows which one it found, it says so: Eq User rather than an Eq
instance, the binding's own name rather than a binding, the package the
generator is in rather than a package. That is what varies between two
findings of one rule, and it is what a reader scanning a list of them
needs.

The rule text is the standard, in the one line the marker has room for.

The rule why is the argument for the rule, so it stays general to the
rule and stops when it has made it. The exceptions that were worth
keeping stayed: toFilePath at the edge, and a Show that ignores the
value.

Goldens reset.
GitHub
Time to Start Worker time Duration Time to finish Idle
Config 2m31s 1s 1s 2m32s 2m31s
Eval 10m24s 11s 11s 10m35s 7m52s
Build 10m30s 0s - - 0s
Suite 2m31s 12s - - 19m55s