packages feed

smuggler-0.0.0: src/Smuggler/Loc.hs

module Smuggler.Loc
       ( showLoc
       , showL
       , unL
       ) where

import SrcLoc (GenLocated (L), Located, SrcSpan (RealSrcSpan), srcSpanStartCol, srcSpanStartLine,
               unLoc)

-- | Returns location in the way of @line:col@.
showLoc :: SrcSpan -> String
showLoc (RealSrcSpan r) = show (srcSpanStartLine r) ++ ":" ++ show (srcSpanStartCol r)
showLoc loc             = show loc

-- | Shows 'Located' in brackets.
showL :: String -> (a -> String) -> Located a -> String
showL name showA (L l nm) = "(" ++ showLoc l ++ name ++ showA nm ++ ")"

-- | Shorter synonim for 'unLoc'.
unL :: GenLocated l e -> e
unL = unLoc