{-# OPTIONS_GHC -cpp -fglasgow-exts -fno-warn-orphans -funbox-strict-fields #-} module Pugs.AST.Pos ( Pos(..), ) where import Data.Typeable import Data.ByteString (ByteString) {-| Represents the position of a chunk of source code: filename; start line & column; end line & column. Not to be confused with the 'Exp' constructor of the same name, which stores a sub-tree and its associated 'Pos'. -} data Pos = MkPos { posName :: !ByteString -- ^ Source file name , posBeginLine :: !Int , posBeginColumn :: !Int , posEndLine :: !Int , posEndColumn :: !Int } deriving (Eq, Ord, Typeable) instance Show Pos where show (MkPos name bln bcl eln ecl) = "(MkPos " ++ show name ++ " " ++ (unwords . map show $ [bln, bcl, eln, ecl]) ++ ")"