f6d8ecb8

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

Ask for a constructor and a field named after their type

A constructor and a field are in scope wherever their type is, and the type
is written nowhere near the use site, so the name has to carry it. The whole
of the type's name, because an abbreviation of it is a second name for the
type that nothing keeps in step with the first.

Case is ignored when reading the prefix. A field lowers the first letter of
the type's name, and a type whose name opens with an acronym has more than
the first letter lowered by anyone writing the field by hand, so the case of
the prefix is not something a name can be held to. What it is held to is that
the whole of the name is there.

An operator name is left alone in either role. An infix constructor is read
as the operator between its arguments rather than as a word, so there is
nowhere in it for a prefix to go.
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