-------------------
Newtypes and ccalls
[addendum]
-------------------
MERGE WITH STABLE BRANCH
I accidentally omitted these two wibbles from my previous commit.
I've added PrelNames.unitTyConKey, and used it in TcType and DsCCall.
import UniqFM
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
import UniqFM
import Unique ( Unique, Uniquable(..), hasKey,
mkPreludeMiscIdUnique, mkPreludeDataConUnique,
- mkPreludeTyConUnique, mkPreludeClassUnique
+ mkPreludeTyConUnique, mkPreludeClassUnique,
+ mkTupleTyConUnique
)
import BasicTypes ( Boxity(..), Arity )
import UniqFM ( UniqFM, listToUFM )
)
import BasicTypes ( Boxity(..), Arity )
import UniqFM ( UniqFM, listToUFM )
crossTyConKey = mkPreludeTyConUnique 79
plusTyConKey = mkPreludeTyConUnique 80
genUnitTyConKey = mkPreludeTyConUnique 81
crossTyConKey = mkPreludeTyConUnique 79
plusTyConKey = mkPreludeTyConUnique 80
genUnitTyConKey = mkPreludeTyConUnique 81
+
+unitTyConKey = mkTupleTyConUnique Boxed 0
\end{code}
%************************************************************************
\end{code}
%************************************************************************
import NameSet
import PrelNames -- Lots (e.g. in isFFIArgumentTy
import TysWiredIn ( ptrTyCon, funPtrTyCon, addrTyCon, unitTyCon )
import NameSet
import PrelNames -- Lots (e.g. in isFFIArgumentTy
import TysWiredIn ( ptrTyCon, funPtrTyCon, addrTyCon, unitTyCon )
-import Unique ( Unique, Uniquable(..), mkTupleTyConUnique )
+import Unique ( Unique, Uniquable(..) )
import SrcLoc ( SrcLoc )
import Util ( cmpList, thenCmp )
import Maybes ( maybeToBool, expectJust )
import SrcLoc ( SrcLoc )
import Util ( cmpList, thenCmp )
import Maybes ( maybeToBool, expectJust )
isIntTy = is_tc intTyConKey
isAddrTy = is_tc addrTyConKey
isBoolTy = is_tc boolTyConKey
isIntTy = is_tc intTyConKey
isAddrTy = is_tc addrTyConKey
isBoolTy = is_tc boolTyConKey
-isUnitTy = is_tc (mkTupleTyConUnique Boxed 0)
+isUnitTy = is_tc unitTyConKey
is_tc :: Unique -> Type -> Bool
-- Newtypes are opaque to this
is_tc :: Unique -> Type -> Bool
-- Newtypes are opaque to this