packages feed

static-ls-0.1.2: test/TestImport/TestData.hs

{-# LANGUAGE DuplicateRecordFields #-}

module TestImport.TestData where

import qualified Language.LSP.Protocol.Types as LSP
import qualified System.Directory as Dir

myFunDefTdiAndPosition :: (LSP.TextDocumentIdentifier, LSP.Position)
myFunDefTdiAndPosition =
    let pos =
            LSP.Position
                { LSP._line = unsafeIntToUInt 4
                , LSP._character = unsafeIntToUInt 0
                }
        tdi =
            LSP.TextDocumentIdentifier $ LSP.filePathToUri "test/TestData/Mod2.hs"
     in (tdi, pos)

myFunDefDefinitionLink :: IO LSP.DefinitionLink
myFunDefDefinitionLink = do
    LSP.Location{..} <- myFunDefLocation
    pure . LSP.DefinitionLink $
        LSP.LocationLink
            { _originSelectionRange = Nothing
            , _targetUri = _uri
            , _targetRange = _range
            , _targetSelectionRange = _range
            }

myFunDefLocation :: IO LSP.Location
myFunDefLocation = do
    absDir <- Dir.makeAbsolute "test/TestData/Mod2.hs"
    pure $
        LSP.Location
            { LSP._uri = LSP.filePathToUri absDir
            , LSP._range =
                LSP.Range
                    { _start =
                        LSP.Position
                            { LSP._line = 11
                            , LSP._character = 0
                            }
                    , LSP._end =
                        LSP.Position
                            { LSP._line = 11
                            , LSP._character = 5
                            }
                    }
            }

myFunRef1TdiAndPosition :: (LSP.TextDocumentIdentifier, LSP.Position)
myFunRef1TdiAndPosition =
    let pos =
            LSP.Position
                { LSP._line = unsafeIntToUInt 10
                , LSP._character = unsafeIntToUInt 18
                }
        tdi =
            LSP.TextDocumentIdentifier $ LSP.filePathToUri "test/TestData/Mod1.hs"
     in (tdi, pos)

unsafeIntToUInt :: Int -> LSP.UInt
unsafeIntToUInt = fromIntegral