diff options
author | Krzysztof Gogolewski <krzysztof.gogolewski@tweag.io> | 2020-10-10 17:03:02 +0200 |
---|---|---|
committer | Krzysztof Gogolewski <krzysztof.gogolewski@tweag.io> | 2020-10-10 17:57:43 +0200 |
commit | 1da081eb2bdb00798357de2a963111c71cfd9895 (patch) | |
tree | 459c6c68ec8a5db166844cab8104b470b94ac234 | |
parent | e9a43b2ee909213725885f0f5e3081d43d9e72f3 (diff) | |
download | haskell-wip/no-typeable-proxy.tar.gz |
Remove Proxy# argument in Data.Typeable.Internalwip/no-typeable-proxy
Not neccessary. This was from the times TypeRep was not indexed.
-rw-r--r-- | compiler/GHC/HsToCore/Binds.hs | 10 | ||||
-rw-r--r-- | compiler/GHC/Tc/Instance/Class.hs | 2 | ||||
-rw-r--r-- | libraries/base/Data/Typeable/Internal.hs | 8 | ||||
-rw-r--r-- | libraries/base/GHC/Exception.hs-boot | 2 |
4 files changed, 10 insertions, 12 deletions
diff --git a/compiler/GHC/HsToCore/Binds.hs b/compiler/GHC/HsToCore/Binds.hs index 53926361fc..c21c0140c1 100644 --- a/compiler/GHC/HsToCore/Binds.hs +++ b/compiler/GHC/HsToCore/Binds.hs @@ -56,7 +56,6 @@ import GHC.Core.Coercion import GHC.Core.Multiplicity import GHC.Builtin.Types ( typeNatKind, typeSymbolKind ) import GHC.Types.Id -import GHC.Types.Id.Make(proxyHashId) import GHC.Types.Name import GHC.Types.Var.Set import GHC.Core.Rules @@ -1220,7 +1219,7 @@ dsEvTerm (EvFun { et_tvs = tvs, et_given = given dsEvTypeable :: Type -> EvTypeable -> DsM CoreExpr -- Return a CoreExpr :: Typeable ty -- This code is tightly coupled to the representation --- of TypeRep, in base library Data.Typeable.Internals +-- of TypeRep, in base library Data.Typeable.Internal dsEvTypeable ty ev = do { tyCl <- dsLookupTyCon typeableClassName -- Typeable ; let kind = typeKind ty @@ -1299,14 +1298,13 @@ ds_ev_typeable ty (EvTypeableTyLit ev) = -- See Note [Typeable for Nat and Symbol] in GHC.Tc.Solver.Interact do { fun <- dsLookupGlobalId tr_fun ; dict <- dsEvTerm ev -- Of type KnownNat/KnownSymbol - ; let proxy = mkTyApps (Var proxyHashId) [ty_kind, ty] - ; return (mkApps (mkTyApps (Var fun) [ty]) [ dict, proxy ]) } + ; return (mkApps (mkTyApps (Var fun) [ty]) [ dict ]) } where ty_kind = typeKind ty -- tr_fun is the Name of - -- typeNatTypeRep :: KnownNat a => Proxy# a -> TypeRep a - -- of typeSymbolTypeRep :: KnownSymbol a => Proxy# a -> TypeRep a + -- typeNatTypeRep :: KnownNat a => TypeRep a + -- of typeSymbolTypeRep :: KnownSymbol a => TypeRep a tr_fun | ty_kind `eqType` typeNatKind = typeNatTypeRepName | ty_kind `eqType` typeSymbolKind = typeSymbolTypeRepName | otherwise = panic "dsEvTypeable: unknown type lit kind" diff --git a/compiler/GHC/Tc/Instance/Class.hs b/compiler/GHC/Tc/Instance/Class.hs index 10270e3726..22ad94d067 100644 --- a/compiler/GHC/Tc/Instance/Class.hs +++ b/compiler/GHC/Tc/Instance/Class.hs @@ -548,7 +548,7 @@ have this instance, implemented here by doTyLit: instance KnownNat n => Typeable (n :: Nat) where typeRep = typeNatTypeRep @n where - Data.Typeable.Internals.typeNatTypeRep :: KnownNat a => TypeRep a + Data.Typeable.Internal.typeNatTypeRep :: KnownNat a => TypeRep a Ultimately typeNatTypeRep uses 'natSing' from KnownNat to get a runtime value 'n'; it turns it into a string with 'show' and uses diff --git a/libraries/base/Data/Typeable/Internal.hs b/libraries/base/Data/Typeable/Internal.hs index e1ad3ed3fe..51169e9d07 100644 --- a/libraries/base/Data/Typeable/Internal.hs +++ b/libraries/base/Data/Typeable/Internal.hs @@ -979,12 +979,12 @@ mkTypeLitTyCon name kind_tycon where kind = KindRepTyConApp kind_tycon [] -- | Used to make `'Typeable' instance for things of kind Nat -typeNatTypeRep :: KnownNat a => Proxy# a -> TypeRep a -typeNatTypeRep p = typeLitTypeRep (show (natVal' p)) tcNat +typeNatTypeRep :: forall a. KnownNat a => TypeRep a +typeNatTypeRep = typeLitTypeRep (show (natVal' (proxy# @a))) tcNat -- | Used to make `'Typeable' instance for things of kind Symbol -typeSymbolTypeRep :: KnownSymbol a => Proxy# a -> TypeRep a -typeSymbolTypeRep p = typeLitTypeRep (show (symbolVal' p)) tcSymbol +typeSymbolTypeRep :: forall a. KnownSymbol a => TypeRep a +typeSymbolTypeRep = typeLitTypeRep (show (symbolVal' (proxy# @a))) tcSymbol mkTypeLitFromString :: TypeLitSort -> String -> SomeTypeRep mkTypeLitFromString TypeLitSymbol s = diff --git a/libraries/base/GHC/Exception.hs-boot b/libraries/base/GHC/Exception.hs-boot index 4507b20790..86502c9ae6 100644 --- a/libraries/base/GHC/Exception.hs-boot +++ b/libraries/base/GHC/Exception.hs-boot @@ -14,7 +14,7 @@ More dramatically GHC.Exception imports Data.Typeable -imports Data.Typeable.Internals +imports Data.Typeable.Internal imports GHC.Arr (fingerprint representation etc) imports GHC.Real imports {-# SOURCE #-} GHC.Exception |