{-# LANGUAGE CPP #-} module Util (SrcLoc(..), mapLocations) where #if MIN_VERSION_base(4,8,1) && !MIN_VERSION_base(4,9,0) import qualified GHC.SrcLoc as GHC import Data.CallStack hiding (SrcLoc(..)) data SrcLoc = SrcLoc { srcLocPackage :: String , srcLocModule :: String , srcLocFile :: String , srcLocStartLine :: Int , srcLocStartCol :: Int , srcLocEndLine :: Int , srcLocEndCol :: Int } deriving (Eq, Show) mapLocations :: CallStack -> [(String, SrcLoc)] mapLocations = map (fmap mapLocation) where mapLocation location = SrcLoc { srcLocPackage = GHC.srcLocPackage location , srcLocModule = GHC.srcLocModule location , srcLocFile = GHC.srcLocFile location , srcLocStartLine = GHC.srcLocStartLine location , srcLocStartCol = GHC.srcLocStartCol location , srcLocEndLine = GHC.srcLocEndLine location , srcLocEndCol = GHC.srcLocEndCol location } #else import Data.CallStack mapLocations :: CallStack -> CallStack mapLocations = id #endif