1a84cc52

Created Started Finished

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.

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.

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.