af0dfd89

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

Say it without the negations

A reader parses "nothing X is Y" slower than "only X is Y", and stacked
negations worse still. The prose had a lot of both. CommentBareTodo's
why ran three deep: a TODO nothing points at is a note nobody is
holding, and nothing brings it back up. HsNoFilePath scoped one
negation over a three-way disjunction: it does not say file or
directory, absolute or relative, or path at all.

Say the positive thing instead.

The nothing-but exception form became only: only the Main that gathers
the specs reads a test file, only a library can be imported, a test file
binds only spec. Where the negation was carrying real content it stayed,
as a single contrast one clause deep: a path is a Path, not a FilePath.

HsNoCustomShowRead is the one this started from. It now says what a
written Show does, rather than what nothing does about it, and its
unless became a plain either-or.

The report layer got the same pass: a suppression sits on its own rather
than not being attached to anything, and an unknown rule id asks the
reader to check the spelling rather than explaining what turning off a
name nothing answers to leaves running.

Goldens reset.
GitHub
Time to Start Worker time Duration Time to finish Idle
Config 1m45s 0s 0s 1m46s 1m45s
Eval 1m47s 13s 13s 2m00s 0s
Build 1m59s 0s - - 0s
Suite 1m45s 14s - - 1h17m22s