-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Generic GHC Plugin for annotating Haskell code with source location data. -- @package ghc-srcspan-plugin @version 0.2.1.0 -- | This module provides a generic Core-to-Core pass for annotating -- Haskell expressions with the original source locations. You can use it -- to build a GHC Plugin tailored to your own library by providing a -- predicate a function to annotate interesting expressions. -- -- Example usage: -- --
--   module MyPlugin (plugin) where
--   
--   import GhcPlugins
--   import GHC.Plugins.SrcSpan
--   
--   plugin :: Plugin
--   plugin = defaultPlugin { installCoreToDos = install }
--   
--   install :: [CommandLineOption] -> [CoreToDo] -> CoreM [CoreToDo]
--   install opts todos = do
--     reinitializeGlobals
--     return $ mypass : todos
--     where
--     mypass = CoreDoPluginPass "Add Locations" $ mkPass annotate False
--     annotate expr = ...
--   
-- -- You will need to coax GHC into adding the source information to the -- Core via Ticks. Currently there are three ways to do this: -- --
    --
  1. Load your module in ghci.
  2. --
  3. Compile your module with -prof -fprof-auto-calls. (You -- can use other profiling options, but that will result in poorer -- Tick granularity)
  4. --
  5. Compile your module with -fhpc. Note that this will -- result in the hpc runtime being linked into your program, -- which is a bit inconvenient. The plugin will prevent this if you pass -- True instead of False to mkPass, but be -- warned, this will likely break any FFI code your module -- uses.
  6. --
module GHC.Plugins.SrcSpan -- | Given a way of annotating "interesting" CoreExprs with -- SrcSpans, construct a Core-to-Core pass that traverses all of -- the CoreBinds and annotates the interesting ones. mkPass :: (SrcSpan -> CoreExpr -> CoreM CoreExpr) -> Bool -> ModGuts -> CoreM ModGuts lookupModule :: ModuleName -> Maybe FastString -> CoreM Module lookupName :: Module -> OccName -> CoreM Name module GHC.Plugins.ErrorLoc plugin :: Plugin errorAt :: String -> String -> a undefinedAt :: String -> a fromJustAt :: String -> Maybe a -> a