7864d179

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

Say nothing when the name names no type, or names one nobody can build

Running the rule over nix-ci had it name a type on no basis twice over.

That repository declares three ClientSecret newtypes, one per forge, because
one forge's client secret is not another's. The rule told a reader to use
"ClientSecret" and chose between the three by the order their rows came back
in. A name the project declares in more than one module names no type, so it
is not in the lexicon at all now. Counted over modules rather than rows,
because two modules declaring one name is the ambiguity and one module read
twice is not.

It also named Width for a field holding a Word, where Width is exported
without its constructor on purpose so that a panel can only have a width the
grid has room for. A constructor leaves a module only inside its type's
subordinate list, so a bare entry in an export list is the type and not the
constructor however alike they are spelled, and a type nothing outside can wrap
a value in is not a fix any field can apply. That is the same thing the
dependency walk already asks: do not name what the site cannot use. The entry
has to be about the type in question, too, or one Thing (..) anywhere in a
module answers for every constructor the module declares.

Four of this rule's eleven findings in nix-ci remain wrong and none of them is
wrong in a way a checker can see: a GitLab payload's username is not the
validated account name this project parses, and a cursor's row height in grid
units is not a panel's declared height. Those want annotations, which is what
the rule's bucket is for, and they are the reason it is not the error-grade
rule it was argued for.

Total

8s

Created Started Finished

Time to Start Worker time Duration Time to finish Idle
Config 0s 0s 0s 0s 0s
Eval 0s 7s 7s 8s 0s
Build 7s 0s 1s 8s 0s
Suite 0s 8s 8s 8s 0s

Timeline

Config Eval Build
0s