Skip to content
  • Vladislav Zavialov's avatar
    51e3ec83
    Rework built-in and punned names (#25174, #25179, #25180, #25182) · 51e3ec83
    Vladislav Zavialov authored
    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.
    51e3ec83
    Rework built-in and punned names (#25174, #25179, #25180, #25182)
    Vladislav Zavialov authored
    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.
Loading