summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2020-10-10 17:03:02 +0200
committerKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2020-10-10 17:57:43 +0200
commit1da081eb2bdb00798357de2a963111c71cfd9895 (patch)
tree459c6c68ec8a5db166844cab8104b470b94ac234
parente9a43b2ee909213725885f0f5e3081d43d9e72f3 (diff)
downloadhaskell-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.hs10
-rw-r--r--compiler/GHC/Tc/Instance/Class.hs2
-rw-r--r--libraries/base/Data/Typeable/Internal.hs8
-rw-r--r--libraries/base/GHC/Exception.hs-boot2
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