82bd13d4

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

Exempt Show and Read instances that ignore what they are given

The ban exists because a written Show is a second serialisation that
drifts from the type it prints. An instance whose every method discards
all of its arguments cannot drift: what it produces does not depend on
the type at all. That is also the shape a secret takes when the point is
to keep it out of every log line, which the guide has always allowed, so
it is now the rule rather than a suppression at every such instance.

Recognised syntactically: every method the instance writes out has at
least one argument pattern and every one of them is a wildcard.
Constructor patterns are not enough, because `show Red = "red"` reads
the value while binding nothing, and an instance with no methods written
out says nothing about what its class defaults do with the value.
e2e-added-rule-is-rune2e-artifacts-are-reade2e-choices-are-found-beside-the-repositorye2e-cleane2e-dirty-package-is-judged-failinge2e-dirty-project-is-judged-failinge2e-dirty-report-is-readablee2e-disabled-rule-is-not-rune2e-incomplete-artifacts-are-a-failuree2e-judging-nothing-failse2e-named-packages-are-every-packagee2e-no-packages-is-judged-failinge2e-no-store-paths-in-findingse2e-paths-are-repository-relativee2e-withheld-facts-faile2e-wrong-source-mapping-is-a-complainthlint-checkhopinionpre-commitreleaseshellweeder-checkconfiguredevShelldefaultx86_64-linux