From ec3c7841346821c2d5342d0d9c3ff1ae4558aeb6 Mon Sep 17 00:00:00 2001 From: "andy@galois.com" Date: Wed, 25 Oct 2006 20:15:14 +0000 Subject: [PATCH] Adding arrows to the acceptable code for hpc --- compiler/deSugar/Coverage.lhs | 24 ++++++++++++++++-------- compiler/deSugar/DsArrows.lhs | 6 ++++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/compiler/deSugar/Coverage.lhs b/compiler/deSugar/Coverage.lhs index 9a53b2b..36b0404 100644 --- a/compiler/deSugar/Coverage.lhs +++ b/compiler/deSugar/Coverage.lhs @@ -266,20 +266,28 @@ addTickHsExpr (HsWrap w e) = liftM2 HsWrap (return w) (addTickHsExpr e) -- explicitly no tick on inside -addTickHsExpr (HsArrApp {}) = error "addTickHsExpr: HsArrApp " -addTickHsExpr (HsArrForm {}) = error "addTickHsExpr: HsArrForm" +addTickHsExpr (HsArrApp e1 e2 ty1 arr_ty lr) = + liftM5 HsArrApp + (addTickLHsExpr e1) + (addTickLHsExpr e2) + (return ty1) + (return arr_ty) + (return lr) +addTickHsExpr (HsArrForm e fix cmdtop) = + liftM3 HsArrForm + (addTickLHsExpr e) + (return fix) + (mapM (liftL addTickHsCmdTop) cmdtop) + +addTickHsExpr e@(HsType ty) = return e + +-- Should never happen in expression content. addTickHsExpr (EAsPat _ _) = error "addTickHsExpr: EAsPat _ _" addTickHsExpr (ELazyPat _) = error "addTickHsExpr: ELazyPat _" addTickHsExpr (EWildPat) = error "addTickHsExpr: EWildPat" addTickHsExpr (HsBinTick _ _ _) = error "addTickhsExpr: HsBinTick _ _ _" addTickHsExpr (HsTick _ _) = error "addTickhsExpr: HsTick _ _" -addTickHsExpr e@(HsType ty) = return e - --- catch all, and give an error message. ---addTickHsExpr e = error ("addTickLhsExpr: " ++ showSDoc (ppr e)) - - addTickMatchGroup (MatchGroup matches ty) = do let isOneOfMany = True -- AJG: for now matches' <- mapM (liftL (addTickMatch isOneOfMany)) matches diff --git a/compiler/deSugar/DsArrows.lhs b/compiler/deSugar/DsArrows.lhs index 4d9295d..e5b2b55 100644 --- a/compiler/deSugar/DsArrows.lhs +++ b/compiler/deSugar/DsArrows.lhs @@ -586,6 +586,12 @@ dsCmd _ids local_vars env_ids _stack _res_ty (HsArrForm op _ args) returnDs (mkApps (App core_op (Type env_ty)) core_args, unionVarSets fv_sets) + +dsCmd ids local_vars env_ids stack res_ty (HsTick ix expr) + = dsLCmd ids local_vars env_ids stack res_ty expr `thenDs` \ (expr1,id_set) -> + mkTickBox ix expr1 `thenDs` \ expr2 -> + return (expr2,id_set) + -- A | ys |- c :: [ts] t (ys <= xs) -- --------------------- -- A | xs |- c :: [ts] t ---> arr_ts (\ (xs) -> (ys)) >>> c -- 1.7.10.4