X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FcoreSyn%2FMkExternalCore.lhs;h=717d3d8d9383f0b6b740a1da11bd7912cb20fa97;hb=960a5edb6ac87c7d85e36f4b70be8da0175819f7;hp=861f501cc43a731873433b00a910abdc48853790;hpb=391a3e9c08c470bd1444cba2e5111e253c19ea84;p=ghc-hetmet.git diff --git a/compiler/coreSyn/MkExternalCore.lhs b/compiler/coreSyn/MkExternalCore.lhs index 861f501..717d3d8 100644 --- a/compiler/coreSyn/MkExternalCore.lhs +++ b/compiler/coreSyn/MkExternalCore.lhs @@ -90,12 +90,10 @@ collect_tdefs tcon tdefs Nothing -> pprPanic ("MkExternalCore: newtype tcon\ should have a coercion: ") (ppr tcon)) (map make_tbind tyvars) - repclause + (make_ty (snd (newTyConRhs tcon))) | otherwise = C.Data (qtc tcon) (map make_tbind tyvars) (map make_cdef (tyConDataCons tcon)) - where repclause | isRecursiveTyCon tcon || isOpenTyCon tcon= Nothing - | otherwise = Just (make_ty (snd (newTyConRhs tcon))) tyvars = tyConTyVars tcon collect_tdefs _ tdefs = tdefs @@ -116,7 +114,7 @@ make_tbind :: TyVar -> C.Tbind make_tbind tv = (make_var_id (tyVarName tv), make_kind (tyVarKind tv)) make_vbind :: Var -> C.Vbind -make_vbind v = (make_var_id (Var.varName v), make_ty (idType v)) +make_vbind v = (make_var_id (Var.varName v), make_ty (varType v)) make_vdef :: Bool -> CoreBind -> CoreM C.Vdefg make_vdef topLevel b = @@ -130,7 +128,7 @@ make_vdef topLevel b = let local = not topLevel || localN rhs <- make_exp e -- use local flag to determine where to add the module name - return (local, make_qid local True vName, make_ty (idType v),rhs) + return (local, make_qid local True vName, make_ty (varType v),rhs) where vName = Var.varName v make_exp :: CoreExpr -> CoreM C.Exp @@ -138,11 +136,11 @@ make_exp (Var v) = do let vName = Var.varName v isLocal <- isALocal vName return $ - case globalIdDetails v of + case globalIdVarDetails v of FCallId (CCall (CCallSpec (StaticTarget nm) callconv _)) - -> C.External (unpackFS nm) (showSDoc (ppr callconv)) (make_ty (idType v)) + -> C.External (unpackFS nm) (showSDoc (ppr callconv)) (make_ty (varType v)) FCallId (CCall (CCallSpec DynamicTarget callconv _)) - -> C.DynExternal (showSDoc (ppr callconv)) (make_ty (idType v)) + -> C.DynExternal (showSDoc (ppr callconv)) (make_ty (varType v)) FCallId _ -> pprPanic "MkExternalCore died: can't handle non-{static,dynamic}-C foreign call" (ppr v)