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