diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2021-10-27 14:19:59 +0100 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-11-05 05:30:48 -0400 |
commit | 59dfb00584e6d24d82d3f5338c6299bae48e0468 (patch) | |
tree | f538e7287a05e37ae26a7cf9abb9a6087e1371f2 /compiler/GHC/Builtin | |
parent | f0b920d1613db43925c01f02b0f550e29b11a86b (diff) | |
download | haskell-59dfb00584e6d24d82d3f5338c6299bae48e0468.tar.gz |
Remove record field from Solo
Ticket #20562 revealed that Solo, which is a wired-in TyCon, had
a record field that wasn't being added to the type env. Why not?
Because wired-in TyCons don't have record fields.
It's not hard to change that, but it's tiresome for this one use-case,
and it seems easier simply to make `getSolo` into a standalone
function.
On the way I refactored the handling of Solo slightly, to put it
into wiredInTyCons (where it belongs) rather than only in
knownKeyNames
Diffstat (limited to 'compiler/GHC/Builtin')
-rw-r--r-- | compiler/GHC/Builtin/Types.hs | 12 | ||||
-rw-r--r-- | compiler/GHC/Builtin/Utils.hs | 8 |
2 files changed, 12 insertions, 8 deletions
diff --git a/compiler/GHC/Builtin/Types.hs b/compiler/GHC/Builtin/Types.hs index 421029a4fb..1c587810ba 100644 --- a/compiler/GHC/Builtin/Types.hs +++ b/compiler/GHC/Builtin/Types.hs @@ -74,6 +74,7 @@ module GHC.Builtin.Types ( tupleTyCon, tupleDataCon, tupleTyConName, tupleDataConName, promotedTupleDataCon, unitTyCon, unitDataCon, unitDataConId, unitTy, unitTyConKey, + soloTyCon, pairTyCon, mkPromotedPairTy, isPromotedPairType, unboxedUnitTy, unboxedUnitTyCon, unboxedUnitDataCon, @@ -288,6 +289,14 @@ wiredInTyCons = [ -- Units are not treated like other tuples, because they -- need to look out for them. unitTyCon , unboxedUnitTyCon + + -- Solo (i.e., the bosed 1-tuple) is also not treated + -- like other tuples (i.e. we /do/ include it here), + -- since it does not use special syntax like other tuples + -- See Note [One-tuples] (Wrinkle: Make boxed one-tuple names + -- have known keys) in GHC.Builtin.Types. + , soloTyCon + , anyTyCon , boolTyCon , charTyCon @@ -1208,6 +1217,9 @@ unitDataCon = head (tyConDataCons unitTyCon) unitDataConId :: Id unitDataConId = dataConWorkId unitDataCon +soloTyCon :: TyCon +soloTyCon = tupleTyCon Boxed 1 + pairTyCon :: TyCon pairTyCon = tupleTyCon Boxed 2 diff --git a/compiler/GHC/Builtin/Utils.hs b/compiler/GHC/Builtin/Utils.hs index 16d5096605..9d91b1246d 100644 --- a/compiler/GHC/Builtin/Utils.hs +++ b/compiler/GHC/Builtin/Utils.hs @@ -62,7 +62,6 @@ import GHC.Core.Class import GHC.Core.TyCon import GHC.Types.Avail -import GHC.Types.Basic import GHC.Types.Id import GHC.Types.Name import GHC.Types.Name.Env @@ -130,13 +129,6 @@ knownKeyNames = all_names where all_names = - -- We exclude most tuples from this list—see - -- Note [Infinite families of known-key names] in GHC.Builtin.Names. - -- We make an exception for Solo (i.e., the boxed 1-tuple), since it does - -- not use special syntax like other tuples. - -- See Note [One-tuples] (Wrinkle: Make boxed one-tuple names have known keys) - -- in GHC.Builtin.Types. - tupleTyConName BoxedTuple 1 : tupleDataConName Boxed 1 : concat [ concatMap wired_tycon_kk_names primTyCons , concatMap wired_tycon_kk_names wiredInTyCons , concatMap wired_tycon_kk_names typeNatTyCons |