X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FdeSugar%2FDsBreakpoint.lhs;h=1d17c97aa4b86e09340ae09d7fe94f09ea086bf8;hb=848d28cc8df29b3ff10529dcfbc4596355935c84;hp=eac7e4845cda37851847e2115e5dff83d61d1fe8;hpb=8894145751d8c7841b25e3fe561b42f65982d057;p=ghc-hetmet.git diff --git a/compiler/deSugar/DsBreakpoint.lhs b/compiler/deSugar/DsBreakpoint.lhs index eac7e48..1d17c97 100644 --- a/compiler/deSugar/DsBreakpoint.lhs +++ b/compiler/deSugar/DsBreakpoint.lhs @@ -59,7 +59,8 @@ mkBreakpointExpr loc bkptFuncId = do let scope = filter (isValidType .idType ) scope' mod_name = moduleNameFS$ moduleName mod if null scope && instrumenting - then return (l$ HsVar lazyId) + -- need to return some expresion, hence lazy is used here as a noop (hopefully) + then return (l$ HsVar lazyId) else do when (not instrumenting) $ warnDs (text "Extracted ids:" <+> (ppr scope $$ @@ -114,9 +115,6 @@ debug_enabled = do debug_enabled = return False #endif -maybeInsertBreakpoint :: LHsExpr Id -> Type -> DsM (LHsExpr Id) ---maybeInsertBreakpoint e | pprTrace("insertBreakpoint at" (ppr e) False = undefined - isInstrumentationSpot (L loc e) = do ghcmode <- getGhcModeDs instrumenting <- debug_enabled @@ -144,7 +142,6 @@ dynBreakpoint loc = do -- Records a breakpoint site and returns the site number recordBkpt :: SrcLoc -> DsM (Int) ---recordBkpt | trace "recordBkpt" False = undefined recordBkpt loc = do sites_var <- getBkptSitesDs sites <- ioToIOEnv$ readIORef sites_var @@ -180,13 +177,14 @@ mkJumpFunc bkptFuncId breakpoints_enabled :: DsM Bool dsAndThenMaybeInsertBreakpoint :: LHsExpr Id -> DsM CoreExpr +-- | Takes an expression and its type +maybeInsertBreakpoint :: LHsExpr Id -> Type -> DsM (LHsExpr Id) #ifdef GHCI maybeInsertBreakpoint lhsexpr@(L loc _) ty = do instrumenting <- isInstrumentationSpot lhsexpr if instrumenting then do L _ dynBkpt <- dynBreakpoint loc --- return (l (HsApp (l$ TyApp dynBkpt [ty]) lhsexpr)) return$ l(HsApp (l$ HsWrap (WpTyApp ty) dynBkpt) lhsexpr) else return lhsexpr where l = L loc