!cyi@      !"#$%&'()*+,-./0123456789:;<=>? Safe@ANoneRlsp-test)An exception that can be thrown during a  lsp-test A predicate that matches on any   NoneBlsp-testBFetches the next message bytes based on the Content-Length header CDBEFGHIJKNone>SXfLM NoneSXNOPQR SafeS None =>?@ASX Tlsp-testTThe last received message from the server. Used for providing exception information lsp-testStuff you can configure for a . lsp-test>Maximum time to wait for a message in seconds, defaults to 60. lsp-test?Redirect the server's stderr to this stdout, defaults to False.lsp-testBTrace the messages sent and received to stdout, defaults to False.lsp-test8Add ANSI color to the logged messages, defaults to True.lsp-test:The initial LSP config as JSON value, defaults to Nothing.lsp-testLA session representing one instance of launching and connecting to a server.7You can send and receive messages to the server within  via  ,   and .lsp-testThe configuration used in .Ulsp-testAn internal version of V} that allows for a custom handler to listen to the server. It also does not automatically send initialize and exit messages.lsp-test$Execute a block f that will throw a y exception after duration seconds. This will override the global timeout for waiting for messages to arrive defined in  .Wlsp-test+Logs the message if the config specified itUlsp-test Server inlsp-test Server outlsp-testServer listenerlsp-testRoot directory+XYZ[\]^_`abcdeTfghijklmnopqrs UtuWNone@ASX' lsp-testOConsumes and returns the next message, if it satisfies the specified predicate.lsp-testMatches a message of type a.lsp-test)Matches if the message is a notification.lsp-test$Matches if the message is a request.lsp-test%Matches if the message is a response.lsp-test%Matches a response for a specific id.lsp-testMatches any type of message.vlsp-test2A stupid method for getting out the inner message.wlsp-testPA version of encode that encodes FromServerMessages as if they weren't wrapped.lsp-test\Matches if the message is a log message notification or a show message notification/request.lsp-test Matches a 1 (textDocument/publishDiagnostics) notification. /A functional testing framework for LSP servers.luke_lau@icloud.com experimentalPOSIXNoneESXk#xlsp-testA custom type for request message that doesn't need a response type, allows us to infer the request message type without using proxies.lsp-testStarts a new session. runSession "hie" fullCaps "path/to/root/dir" $ do doc <- openDoc "Desktop/simple.hs" "haskell" diags <- waitForDiagnostics let pos = Position 12 5 params = TextDocumentPositionParams doc hover <- request TextDocumentHover paramslsp-test0Starts a new sesion with a custom configuration.lsp-test(The current text contents of a document. lsp-testbParses an ApplyEditRequest, checks that it is for the passed document and returns the new content!lsp-test{Sends a request to the server and waits for its response. Will skip any messages in between the request and the response W rsp <- request TextDocumentDocumentSymbol params :: Session DocumentSymbolsResponse G Note: will skip any messages in between the request and the response."lsp-test The same as #, but discard the response.#lsp-test&Sends a request to the server. Unlike !%, this doesn't wait for the response.$lsp-test#Sends a notification to the server.%lsp-testSends a response to the server.&lsp-testReturns the initialize response that was received from the server. The initialize requests and responses are not included the session, so if you need to test it use this.'lsp-test=Opens a text document and sends a notification to the client.(lsp-test>Closes a text document and sends a notification to the client.)lsp-test=Gets the Uri for the file corrected to the session directory.*lsp-test7Waits for diagnostics to be published and returns them.+lsp-test The same as *", but will only match a specific y.,lsp-test Expects a z and throws an 2 exception if there are any diagnostics returned.-lsp-test"Returns the symbols in a document..lsp-test0Returns the code actions in the specified range./lsp-testxReturns all the code actions in a document by querying the code actions at each of the current diagnostics' positions.0lsp-testuReturns the current diagnostics that have been sent to the client. Note that this does not wait for more to come in.1lsp-testExecutes a command.2lsp-testExecutes a code action. Matching with the specification, if a code action contains both an edit and a command, the edit will be applied first.3lsp-testDAdds the current version to the document, as tracked by the session.4lsp-testHApplys an edit to the document and returns the updated document version.5lsp-test9Returns the completions for the position in the document.6lsp-test8Returns the references for the position in the document.7lsp-testAReturns the definition(s) for the term at the specified position.8lsp-testFReturns the type definition(s) for the term at the specified position.9lsp-test+Renames the term at the specified position.:lsp-test8Returns the hover information at the specified position.;lsp-testHReturns the highlighted occurences of the term at the specified position{lsp-testdChecks the response for errors and throws an exception if needed. Returns the result if successful.<lsp-test-Applies formatting to the specified document.=lsp-test8Applies formatting to the specified range in a document.lsp-testThe command to run the server.lsp-test0The capabilities that the client should declare.lsp-test3The filepath to the root directory for the session.lsp-testThe session to run.lsp-test&Configuration options for the session.lsp-testThe command to run the server.lsp-test0The capabilities that the client should declare.lsp-test3The filepath to the root directory for the session.lsp-testThe session to run.#lsp-testThe request method.lsp-testThe request parameters.lsp-test$The id of the request that was sent.$lsp-testThe notification method.lsp-testThe notification parameters.6lsp-testThe document to lookup in.lsp-testThe position to lookup.lsp-test.Whether to include declarations as references.lsp-test The locations of the references.7lsp-testThe document the term is in.lsp-testThe position the term is at.lsp-test"The location(s) of the definitions8lsp-testThe document the term is in.lsp-testThe position the term is at.lsp-test"The location(s) of the definitions>  !"#$%&'()*+,-./0123456789:;<=>  !"#$%&'( )3-*+,01./256789:;<=4Noney]?lsp-testReplays a captured client output and makes sure it matches up with an expected response. The session directory should have a captured session file in it named "session.log".|lsp-test=Checks wether or not the message appears in the right order  N1 N2 N3 REQ1 N4 N5 REQ2 RES1 0 given N2, notification order doesn't matter.  N1 N3 REQ1 N4 N5 REQ2 RES1  given REQ1  N1 N3 N4 N5 REQ2 RES1  given RES1  N1 N3 N4 N5 XXXX RES1 / False! Order of requests and responses matter}lsp-testDIgnore logging notifications since they vary from session to session~lsp-testQSwaps out any commands uniqued with process IDs to match the specified process ID?lsp-testThe command to run the server.lsp-testThe recorded session directory.??    ! " #  $ %& '()*+,-./012 3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ` a b c  d e f g h i j k l l m n o p q r s t t u [ v w x y z { | } ~ 'lsp-test-0.5.2.2-GXcrwrmR7dR9ZttSdPx9eCLanguage.Haskell.LSP.Test Language.Haskell.LSP.Test.Replay Language.Haskell.LSP.Test.Compat$Language.Haskell.LSP.Test.ExceptionsHaskell.LSP.Test.SessionSession"Language.Haskell.LSP.Test.DecodingLanguage.Haskell.LSP.Test.Files"Language.Haskell.LSP.Test.Messages Language.Haskell.LSP.Test.Server!Language.Haskell.LSP.Test.Sessionmessage sendRequestsendNotification runSession!Language.Haskell.LSP.Test.ParsingPublishDiagnosticsNotification1haskell-lsp-types-0.12.1.0-2vnsfX6UoMo31fFlmI4PH8'Language.Haskell.LSP.Types.CapabilitiesfullCapsSessionExceptionTimeoutUnexpectedMessageReplayOutOfOrderUnexpectedDiagnosticsIncorrectApplyEditRequestUnexpectedResponseErrorUnexpectedServerTerminationanySessionException SessionConfigmessageTimeout logStdErr logMessageslogColor lspConfig defaultConfig withTimeoutsatisfyanyNotification anyRequest anyResponse responseForId anyMessageloggingNotificationpublishDiagnosticsNotificationrunSessionWithConfigdocumentContentsgetDocumentEditrequestrequest_ sendResponseinitializeResponseopenDoccloseDoc getDocUriwaitForDiagnosticswaitForDiagnosticsSource noDiagnosticsgetDocumentSymbolsgetCodeActionsgetAllCodeActionsgetCurrentDiagnosticsexecuteCommandexecuteCodeActiongetVersionedDoc applyEditgetCompletions getReferencesgetDefinitionsgetTypeDefinitionsrenamegetHover getHighlights formatDoc formatRange$fToJSONRequestMessage' replaySessiongetCurrentProcessID getProcessIDgetNextMessage RequestMapgetAllMessages addHeader getHeaders newRequestMapupdateRequestMap getRequestMapmatchResponseMsgTypedecodeFromServerMsg swapFilesrootDirisServerResponseisServerRequestisServerNotificationhandleServerMessagehandleClientMessage withServeroverridingTimeoutrunSessionWithHandleslogMsg LogMsgType LogClient LogServermodifyMmodifyputget SessionStatelastReceivedMessagecurReqIdvfscurDiagnostics curTimeoutIdasksaskSessionContextconfigserverIn messageChan requestMapinitRspsessionCapabilitiesSessionMessage ServerMessageTimeoutMessage updateState sendMessagecastMsg encodeMsgRequestMessage'%Language.Haskell.LSP.Types.Diagnostic$sel:_source:Diagnostic(Language.Haskell.LSP.Types.DataTypesJSONgetResponseResult inRightOrder shouldSkip swapCommands