X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fprelude%2FTysWiredIn.lhs;h=15f34514d24d1d95047020a546d22abce935e6fb;hb=8fbe28ca67a6c07575aee35bfade43e967ad792e;hp=c63d3e193caab25ed775ff173cef3e1c0dbb10e6;hpb=96cf57e3ca14b3d9e6654a7780ea0b0ea4f5c0e8;p=ghc-hetmet.git diff --git a/ghc/compiler/prelude/TysWiredIn.lhs b/ghc/compiler/prelude/TysWiredIn.lhs index c63d3e1..15f3451 100644 --- a/ghc/compiler/prelude/TysWiredIn.lhs +++ b/ghc/compiler/prelude/TysWiredIn.lhs @@ -178,6 +178,20 @@ pcTyCon new_or_data is_rec name tyvars argvrcs cons kind = mkArrowKinds (map tyVarKind tyvars) boxedTypeKind gen_info = mk_tc_gen_info mod (nameUnique name) name tycon +-- We generate names for the generic to/from Ids by incrementing +-- the TyCon unique. So each Prelude tycon needs 3 slots, one +-- for itself and two more for the generic Ids. +mk_tc_gen_info mod tc_uniq tc_name tycon + = mkTyConGenInfo tycon name1 name2 + where + tc_occ_name = nameOccName tc_name + occ_name1 = mkGenOcc1 tc_occ_name + occ_name2 = mkGenOcc2 tc_occ_name + fn1_key = incrUnique tc_uniq + fn2_key = incrUnique fn1_key + name1 = mkWiredInName mod occ_name1 fn1_key + name2 = mkWiredInName mod occ_name2 fn2_key + pcDataCon :: Name -> [TyVar] -> ClassContext -> [TauType] -> TyCon -> DataCon -- The unique is the first of two free uniques; -- the first is used for the datacon itself and the worker; @@ -246,18 +260,6 @@ mk_tuple boxity arity = (tycon, tuple_con) mod = mkPrelModule mod_name gen_info = mk_tc_gen_info mod tc_uniq tc_name tycon -mk_tc_gen_info mod tc_uniq tc_name tycon - = gen_info - where - tc_occ_name = nameOccName tc_name - occ_name1 = mkGenOcc1 tc_occ_name - occ_name2 = mkGenOcc2 tc_occ_name - fn1_key = incrUnique tc_uniq - fn2_key = incrUnique fn1_key - name1 = mkWiredInName mod occ_name1 fn1_key - name2 = mkWiredInName mod occ_name2 fn2_key - gen_info = mkTyConGenInfo tycon name1 name2 - unitTyCon = tupleTyCon Boxed 0 unitDataConId = dataConId (head (tyConDataCons unitTyCon))