module Refact
( toRefactSrcSpan
, toSS, toSS'
, toSrcSpan'
) where
import qualified Refact.Types as R
import HSE.All
import qualified SrcLoc as GHC
toRefactSrcSpan :: SrcSpan -> R.SrcSpan
toRefactSrcSpan :: SrcSpan -> SrcSpan
toRefactSrcSpan ss :: SrcSpan
ss = Int -> Int -> Int -> Int -> SrcSpan
R.SrcSpan (SrcSpan -> Int
srcSpanStartLine SrcSpan
ss)
(SrcSpan -> Int
srcSpanStartColumn SrcSpan
ss)
(SrcSpan -> Int
srcSpanEndLine SrcSpan
ss)
(SrcSpan -> Int
srcSpanEndColumn SrcSpan
ss)
toSS :: Annotated a => a S -> R.SrcSpan
toSS :: a S -> SrcSpan
toSS = SrcSpan -> SrcSpan
toRefactSrcSpan (SrcSpan -> SrcSpan) -> (a S -> SrcSpan) -> a S -> SrcSpan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. S -> SrcSpan
srcInfoSpan (S -> SrcSpan) -> (a S -> S) -> a S -> SrcSpan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a S -> S
forall (ast :: * -> *) l. Annotated ast => ast l -> l
ann
toSrcSpan' :: GHC.HasSrcSpan a => a -> R.SrcSpan
toSrcSpan' :: a -> SrcSpan
toSrcSpan' x :: a
x = case a -> SrcSpan
forall a. HasSrcSpan a => a -> SrcSpan
GHC.getLoc a
x of
GHC.RealSrcSpan span :: RealSrcSpan
span ->
Int -> Int -> Int -> Int -> SrcSpan
R.SrcSpan (RealSrcSpan -> Int
GHC.srcSpanStartLine RealSrcSpan
span)
(RealSrcSpan -> Int
GHC.srcSpanStartCol RealSrcSpan
span)
(RealSrcSpan -> Int
GHC.srcSpanEndLine RealSrcSpan
span)
(RealSrcSpan -> Int
GHC.srcSpanEndCol RealSrcSpan
span)
GHC.UnhelpfulSpan _ ->
Int -> Int -> Int -> Int -> SrcSpan
R.SrcSpan 0 0 0 0
toSS' :: GHC.HasSrcSpan e => e -> R.SrcSpan
toSS' :: e -> SrcSpan
toSS' = SrcSpan -> SrcSpan
toRefactSrcSpan (SrcSpan -> SrcSpan) -> (e -> SrcSpan) -> e -> SrcSpan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SrcSpan -> SrcSpan
ghcSpanToHSE (SrcSpan -> SrcSpan) -> (e -> SrcSpan) -> e -> SrcSpan
forall b c a. (b -> c) -> (a -> b) -> a -> c
. e -> SrcSpan
forall a. HasSrcSpan a => a -> SrcSpan
GHC.getLoc