module Development.IDE.Spans.Type(
SpanInfo(..)
, SpanSource(..)
, getNameM
) where
import GHC
import Control.DeepSeq
import Data.Maybe
import OccName
data SpanInfo =
SpanInfo {spaninfoStartLine :: {-# UNPACK #-} !Int
,spaninfoStartCol :: {-# UNPACK #-} !Int
,spaninfoEndLine :: {-# UNPACK #-} !Int
,spaninfoEndCol :: {-# UNPACK #-} !Int
,spaninfoType :: !(Maybe Type)
,spaninfoSource :: !SpanSource
}
instance Show SpanInfo where
show (SpanInfo sl sc el ec t n) = show [show sl, show sc, show el, show ec, show $ isJust t, show n]
instance NFData SpanInfo where
rnf = rwhnf
data SpanSource = Named Name
| SpanS SrcSpan
| NoSource
deriving (Eq)
instance Show SpanSource where
show = \case
Named n -> "Named " ++ occNameString (occName n)
SpanS sp -> "Span " ++ show sp
NoSource -> "NoSource"
getNameM :: SpanSource -> Maybe Name
getNameM = \case
Named name -> Just name
_ -> Nothing