X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypes%2FTyCon.lhs;h=85cbf222d24ec69216ec6ff75704fe8145c16019;hb=9670d6643e55adeb15f998a0efd5799d499ea2a4;hp=90ac71c8abc070dd7863ea28edb4d691090ff63f;hpb=71d2bf9206b94d45570dc20de1a5ded12d493708;p=ghc-hetmet.git diff --git a/compiler/types/TyCon.lhs b/compiler/types/TyCon.lhs index 90ac71c..85cbf22 100644 --- a/compiler/types/TyCon.lhs +++ b/compiler/types/TyCon.lhs @@ -11,6 +11,7 @@ module TyCon( PrimRep(..), tyConPrimRep, + sizeofPrimRep, AlgTyConRhs(..), visibleDataCons, TyConParent(..), @@ -76,6 +77,7 @@ import PrelNames import Maybes import Outputable import FastString +import Constants \end{code} %************************************************************************ @@ -213,16 +215,13 @@ data AlgTyConRhs | OpenTyCon { - otArgPoss :: Maybe [Int], + otArgPoss :: Maybe [Int] -- Nothing <=> top-level indexed type family -- Just ns <=> associated (not toplevel) family -- In the latter case, for each tyvar in the AT decl, 'ns' gives the -- position of that tyvar in the class argument list (starting from 0). -- NB: Length is less than tyConArity iff higher kind signature. - otIsNewtype :: Bool - -- is a newtype (rather than data type)? - } | DataTyCon { @@ -457,6 +456,17 @@ data PrimRep | AddrRep -- a pointer, but not to a Haskell value | FloatRep | DoubleRep + +-- Size of a PrimRep, in bytes +sizeofPrimRep :: PrimRep -> Int +sizeofPrimRep IntRep = wORD_SIZE +sizeofPrimRep WordRep = wORD_SIZE +sizeofPrimRep Int64Rep = wORD64_SIZE +sizeofPrimRep Word64Rep= wORD64_SIZE +sizeofPrimRep FloatRep = 4 +sizeofPrimRep DoubleRep= 8 +sizeofPrimRep AddrRep = wORD_SIZE +sizeofPrimRep PtrRep = wORD_SIZE \end{code} %************************************************************************ @@ -633,7 +643,6 @@ isDataTyCon other = False isNewTyCon :: TyCon -> Bool isNewTyCon (AlgTyCon {algTcRhs = rhs}) = case rhs of - OpenTyCon {} -> otIsNewtype rhs NewTyCon {} -> True _ -> False isNewTyCon other = False