module Ide.Plugin.Tactic.Range where

import qualified FastString as FS
import           Development.IDE.Types.Location
import           SrcLoc

------------------------------------------------------------------------------
-- | Convert a DAML compiler Range to a GHC SrcSpan
-- TODO(sandy): this doesn't belong here
rangeToSrcSpan :: String -> Range -> SrcSpan
rangeToSrcSpan :: String -> Range -> SrcSpan
rangeToSrcSpan String
file Range
range = RealSrcSpan -> SrcSpan
RealSrcSpan (RealSrcSpan -> SrcSpan) -> RealSrcSpan -> SrcSpan
forall a b. (a -> b) -> a -> b
$ String -> Range -> RealSrcSpan
rangeToRealSrcSpan String
file Range
range

rangeToRealSrcSpan :: String -> Range -> RealSrcSpan
rangeToRealSrcSpan :: String -> Range -> RealSrcSpan
rangeToRealSrcSpan String
file (Range (Position Int
startLn Int
startCh) (Position Int
endLn Int
endCh)) =
    RealSrcLoc -> RealSrcLoc -> RealSrcSpan
mkRealSrcSpan
      (FastString -> Int -> Int -> RealSrcLoc
mkRealSrcLoc (String -> FastString
FS.fsLit String
file) (Int
startLn Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) (Int
startCh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1))
      (FastString -> Int -> Int -> RealSrcLoc
mkRealSrcLoc (String -> FastString
FS.fsLit String
file) (Int
endLn Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1) (Int
endCh Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
1))