[commit: ghc] wip/ttypeable: Move special tycons (0a6cd5b)
git at git.haskell.org
git at git.haskell.org
Wed Apr 13 17:55:30 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/ttypeable
Link : http://ghc.haskell.org/trac/ghc/changeset/0a6cd5b1a58c8222b970d3efc222f97ce748be09/ghc
>---------------------------------------------------------------
commit 0a6cd5b1a58c8222b970d3efc222f97ce748be09
Author: Ben Gamari <ben at smart-cactus.org>
Date: Wed Mar 16 17:51:01 2016 +0100
Move special tycons
>---------------------------------------------------------------
0a6cd5b1a58c8222b970d3efc222f97ce748be09
compiler/prelude/TysPrim.hs | 16 +++++++++++++++-
compiler/typecheck/TcTypeable.hs | 18 +++---------------
2 files changed, 18 insertions(+), 16 deletions(-)
diff --git a/compiler/prelude/TysPrim.hs b/compiler/prelude/TysPrim.hs
index ce25c30..34f020c 100644
--- a/compiler/prelude/TysPrim.hs
+++ b/compiler/prelude/TysPrim.hs
@@ -27,6 +27,7 @@ module TysPrim(
funTyCon, funTyConName,
primTyCons,
+ primTypeableTyCons,
charPrimTyCon, charPrimTy,
intPrimTyCon, intPrimTy,
@@ -79,7 +80,7 @@ module TysPrim(
#include "HsVersions.h"
import {-# SOURCE #-} TysWiredIn
- ( runtimeRepTy, liftedTypeKind
+ ( runtimeRepTyCon, runtimeRepTy, liftedTypeKind
, vecRepDataConTyCon, ptrRepUnliftedDataConTyCon
, voidRepDataConTy, intRepDataConTy
, wordRepDataConTy, int64RepDataConTy, word64RepDataConTy, addrRepDataConTy
@@ -93,6 +94,7 @@ import {-# SOURCE #-} TysWiredIn
import Var ( TyVar, KindVar, mkTyVar )
import Name
+import NameEnv
import TyCon
import SrcLoc
import Unique
@@ -155,6 +157,18 @@ primTyCons
#include "primop-vector-tycons.hs-incl"
]
+-- | The names of the 'TyCon's which we define 'Typeable' bindings for
+-- explicitly in "Data.Typeable.Internal"
+-- and should not generate bindings for in "GHC.Types".
+--
+-- See Note [Mutually recursive representations of primitive types]
+primTypeableTyCons :: NameEnv TyConRepName
+primTypeableTyCons = mkNameEnv
+ [ (tYPETyConName, trTYPEName)
+ , (tyConName runtimeRepTyCon, trRuntimeRepName)
+ , (funTyConName, trArrowName)
+ ]
+
mkPrimTc :: FastString -> Unique -> TyCon -> Name
mkPrimTc fs unique tycon
= mkWiredInName gHC_PRIM (mkTcOccFS fs)
diff --git a/compiler/typecheck/TcTypeable.hs b/compiler/typecheck/TcTypeable.hs
index b59489d..d0360f5 100644
--- a/compiler/typecheck/TcTypeable.hs
+++ b/compiler/typecheck/TcTypeable.hs
@@ -13,8 +13,7 @@ import IfaceEnv( newGlobalBinder )
import TcEnv
import TcRnMonad
import PrelNames
-import TysPrim ( primTyCons, tYPETyConName, funTyConName )
-import TysWiredIn ( runtimeRepTyCon )
+import TysPrim ( primTyCons, primTypeableTyCons )
import Id
import Type
import TyCon
@@ -22,7 +21,7 @@ import DataCon
import Name( getOccName )
import OccName
import Module
-import NameSet
+import NameEnv
import HsSyn
import DynFlags
import Bag
@@ -166,17 +165,6 @@ mkTypeableTyConBinds tycons
; gbl_env <- tcExtendGlobalValEnv tycon_rep_ids getGblEnv
; return (gbl_env `addTypecheckedBinds` tc_binds) }
--- | The names of the 'TyCon's which we handle explicitly in "Data.Typeable.Internal"
--- and should not generate bindings for in "GHC.Types".
---
--- See Note [Mutually recursive representations of primitive types]
-specialPrimTyCons :: NameSet
-specialPrimTyCons = mkNameSet
- [ tYPETyConName
- , tyConName runtimeRepTyCon
- , funTyConName
- ]
-
-- | Generate bindings for the type representation of a wired-in TyCon defined
-- by the virtual "GHC.Prim" module. This is where we inject the representation
-- bindings for primitive types into "GHC.Types"
@@ -221,7 +209,7 @@ ghcPrimTypeableBinds stuff
all_prim_tys :: [TyCon]
all_prim_tys = [ tc' | tc <- funTyCon : primTyCons
, tc' <- tc : tyConATs tc
- , not $ tyConName tc' `elemNameSet` specialPrimTyCons
+ , not $ tyConName tc' `elemNameEnv` primTypeableTyCons
]
mkBind :: TyCon -> LHsBinds Id
More information about the ghc-commits
mailing list