Skip to content
Snippets Groups Projects
Commit 51e3ec83 authored by Vladislav Zavialov's avatar Vladislav Zavialov
Browse files

Rework built-in and punned names (#25174, #25179, #25180, #25182)

This patch rewrites part of the logic for dealing with built-in and
punned names, making it more principled and fixing a few bugs.

* Kill off filterCTuple. Its purpose was to improve pretty-printing of
  constraint tuples, and the appropriate place for this is namePun_maybe.

* Remove unitTyCon, unboxedUnitTyCon, and soloTyCon from wiredInTyCons.
  Their inclusion in the list was a workaround for shoddy logic in
  lookupOrigNameCache. Now we treat tuples of all arities uniformly.

* In isBuiltInOcc_maybe, only match on actual built-in syntax, e.g. "FUN"
  shouldn't be there (#25174). Also take ListTuplePuns into account (#25179).

* When matching OccNames, use the ShortByteString directly to avoid
  potentially costly conversions to ByteString and String.

* Introduce isInfiniteFamilyOrigName_maybe, a purpose-built helper for
  looking up tuples/sums in the OrigNameCache. This clears up the previously
  convoluted relation between the orig name cache and built-in syntax.

* Reuse isKnownOrigName_maybe to eliminate the need for isPunOcc_maybe.

* Classify MkSolo and MkSolo# as UserSyntax, thus fixing whole-module
  reexports (#25182).

* Teach valid-hole-fits about tuples, unboxed tuples, and unboxed sums,
  up to a certain arity (#25180).

* Drop the unnecessary special case for unary constraint tuples in the
  type checker (finish_tuple). It was a workaround for the lack of CSolo.

* Update Notes and other comments, add tests.
parent f983a00f
No related branches found
No related tags found
Loading
Showing
with 823 additions and 490 deletions
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment