{-# LANGUAGE RankNTypes #-}
module Language.Haskell.LSP.Test.Messages where

import Data.Aeson
import Language.Haskell.LSP.Messages
import Language.Haskell.LSP.Types

isServerResponse :: FromServerMessage -> Bool
isServerResponse :: FromServerMessage -> Bool
isServerResponse (RspInitialize               InitializeResponse
_) = Bool
True
isServerResponse (RspShutdown                 ShutdownResponse
_) = Bool
True
isServerResponse (RspHover                    HoverResponse
_) = Bool
True
isServerResponse (RspCompletion               CompletionResponse
_) = Bool
True
isServerResponse (RspCompletionItemResolve    CompletionItemResolveResponse
_) = Bool
True
isServerResponse (RspSignatureHelp            SignatureHelpResponse
_) = Bool
True
isServerResponse (RspDefinition               DefinitionResponse
_) = Bool
True
isServerResponse (RspTypeDefinition           DefinitionResponse
_) = Bool
True
isServerResponse (RspFindReferences           ReferencesResponse
_) = Bool
True
isServerResponse (RspDocumentHighlights       DocumentHighlightsResponse
_) = Bool
True
isServerResponse (RspDocumentSymbols          DocumentSymbolsResponse
_) = Bool
True
isServerResponse (RspWorkspaceSymbols         WorkspaceSymbolsResponse
_) = Bool
True
isServerResponse (RspCodeAction               CodeActionResponse
_) = Bool
True
isServerResponse (RspCodeLens                 CodeLensResponse
_) = Bool
True
isServerResponse (RspCodeLensResolve          CodeLensResolveResponse
_) = Bool
True
isServerResponse (RspDocumentFormatting       DocumentFormattingResponse
_) = Bool
True
isServerResponse (RspDocumentRangeFormatting  DocumentFormattingResponse
_) = Bool
True
isServerResponse (RspDocumentOnTypeFormatting DocumentFormattingResponse
_) = Bool
True
isServerResponse (RspRename                   RenameResponse
_) = Bool
True
isServerResponse (RspExecuteCommand           ExecuteCommandResponse
_) = Bool
True
isServerResponse (RspError                    ErrorResponse
_) = Bool
True
isServerResponse (RspDocumentLink             DocumentLinkResponse
_) = Bool
True
isServerResponse (RspDocumentLinkResolve      DocumentLinkResolveResponse
_) = Bool
True
isServerResponse (RspWillSaveWaitUntil        DocumentFormattingResponse
_) = Bool
True
isServerResponse FromServerMessage
_                               = Bool
False

isServerRequest :: FromServerMessage -> Bool
isServerRequest :: FromServerMessage -> Bool
isServerRequest (ReqRegisterCapability       RegisterCapabilityRequest
_) = Bool
True
isServerRequest (ReqApplyWorkspaceEdit       ApplyWorkspaceEditRequest
_) = Bool
True
isServerRequest (ReqShowMessage              ShowMessageRequest
_) = Bool
True
isServerRequest (ReqUnregisterCapability     UnregisterCapabilityRequest
_) = Bool
True
isServerRequest FromServerMessage
_                               = Bool
False

isServerNotification :: FromServerMessage -> Bool
isServerNotification :: FromServerMessage -> Bool
isServerNotification (NotPublishDiagnostics       PublishDiagnosticsNotification
_) = Bool
True
isServerNotification (NotLogMessage               LogMessageNotification
_) = Bool
True
isServerNotification (NotShowMessage              ShowMessageNotification
_) = Bool
True
isServerNotification (NotTelemetry                TelemetryNotification
_) = Bool
True
isServerNotification (NotCancelRequestFromServer  CancelNotificationServer
_) = Bool
True
isServerNotification FromServerMessage
_                               = Bool
False

handleServerMessage
    :: forall a.
       (forall b c. RequestMessage ServerMethod b c -> a)
    -> (forall d. ResponseMessage d -> a)
    -> (forall e. NotificationMessage ServerMethod e -> a)
    -> FromServerMessage
    -> a
handleServerMessage :: (forall b c. RequestMessage ServerMethod b c -> a)
-> (forall d. ResponseMessage d -> a)
-> (forall e. NotificationMessage ServerMethod e -> a)
-> FromServerMessage
-> a
handleServerMessage forall b c. RequestMessage ServerMethod b c -> a
request forall d. ResponseMessage d -> a
response forall e. NotificationMessage ServerMethod e -> a
notification FromServerMessage
msg = case FromServerMessage
msg of
    (ReqRegisterCapability       RegisterCapabilityRequest
m) -> RegisterCapabilityRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request RegisterCapabilityRequest
m
    (ReqApplyWorkspaceEdit       ApplyWorkspaceEditRequest
m) -> ApplyWorkspaceEditRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request ApplyWorkspaceEditRequest
m
    (ReqShowMessage              ShowMessageRequest
m) -> ShowMessageRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request ShowMessageRequest
m
    (ReqUnregisterCapability     UnregisterCapabilityRequest
m) -> UnregisterCapabilityRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request UnregisterCapabilityRequest
m
    (ReqCustomServer             CustomServerRequest
m) -> CustomServerRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request CustomServerRequest
m
    (ReqWorkDoneProgressCreate   WorkDoneProgressCreateRequest
m) -> WorkDoneProgressCreateRequest -> a
forall b c. RequestMessage ServerMethod b c -> a
request WorkDoneProgressCreateRequest
m
    (RspInitialize               InitializeResponse
m) -> InitializeResponse -> a
forall d. ResponseMessage d -> a
response InitializeResponse
m
    (RspShutdown                 ShutdownResponse
m) -> ShutdownResponse -> a
forall d. ResponseMessage d -> a
response ShutdownResponse
m
    (RspHover                    HoverResponse
m) -> HoverResponse -> a
forall d. ResponseMessage d -> a
response HoverResponse
m
    (RspCompletion               CompletionResponse
m) -> CompletionResponse -> a
forall d. ResponseMessage d -> a
response CompletionResponse
m
    (RspCompletionItemResolve    CompletionItemResolveResponse
m) -> CompletionItemResolveResponse -> a
forall d. ResponseMessage d -> a
response CompletionItemResolveResponse
m
    (RspSignatureHelp            SignatureHelpResponse
m) -> SignatureHelpResponse -> a
forall d. ResponseMessage d -> a
response SignatureHelpResponse
m
    (RspDefinition               DefinitionResponse
m) -> DefinitionResponse -> a
forall d. ResponseMessage d -> a
response DefinitionResponse
m
    (RspFindReferences           ReferencesResponse
m) -> ReferencesResponse -> a
forall d. ResponseMessage d -> a
response ReferencesResponse
m
    (RspDocumentHighlights       DocumentHighlightsResponse
m) -> DocumentHighlightsResponse -> a
forall d. ResponseMessage d -> a
response DocumentHighlightsResponse
m
    (RspDocumentSymbols          DocumentSymbolsResponse
m) -> DocumentSymbolsResponse -> a
forall d. ResponseMessage d -> a
response DocumentSymbolsResponse
m
    (RspWorkspaceSymbols         WorkspaceSymbolsResponse
m) -> WorkspaceSymbolsResponse -> a
forall d. ResponseMessage d -> a
response WorkspaceSymbolsResponse
m
    (RspCodeAction               CodeActionResponse
m) -> CodeActionResponse -> a
forall d. ResponseMessage d -> a
response CodeActionResponse
m
    (RspCodeLens                 CodeLensResponse
m) -> CodeLensResponse -> a
forall d. ResponseMessage d -> a
response CodeLensResponse
m
    (RspCodeLensResolve          CodeLensResolveResponse
m) -> CodeLensResolveResponse -> a
forall d. ResponseMessage d -> a
response CodeLensResolveResponse
m
    (RspDocumentFormatting       DocumentFormattingResponse
m) -> DocumentFormattingResponse -> a
forall d. ResponseMessage d -> a
response DocumentFormattingResponse
m
    (RspDocumentRangeFormatting  DocumentFormattingResponse
m) -> DocumentFormattingResponse -> a
forall d. ResponseMessage d -> a
response DocumentFormattingResponse
m
    (RspDocumentOnTypeFormatting DocumentFormattingResponse
m) -> DocumentFormattingResponse -> a
forall d. ResponseMessage d -> a
response DocumentFormattingResponse
m
    (RspRename                   RenameResponse
m) -> RenameResponse -> a
forall d. ResponseMessage d -> a
response RenameResponse
m
    (RspExecuteCommand           ExecuteCommandResponse
m) -> ExecuteCommandResponse -> a
forall d. ResponseMessage d -> a
response ExecuteCommandResponse
m
    (RspError                    ErrorResponse
m) -> ErrorResponse -> a
forall d. ResponseMessage d -> a
response ErrorResponse
m
    (RspDocumentLink             DocumentLinkResponse
m) -> DocumentLinkResponse -> a
forall d. ResponseMessage d -> a
response DocumentLinkResponse
m
    (RspDocumentLinkResolve      DocumentLinkResolveResponse
m) -> DocumentLinkResolveResponse -> a
forall d. ResponseMessage d -> a
response DocumentLinkResolveResponse
m
    (RspWillSaveWaitUntil        DocumentFormattingResponse
m) -> DocumentFormattingResponse -> a
forall d. ResponseMessage d -> a
response DocumentFormattingResponse
m
    (RspTypeDefinition           DefinitionResponse
m) -> DefinitionResponse -> a
forall d. ResponseMessage d -> a
response DefinitionResponse
m
    (RspImplementation           DefinitionResponse
m) -> DefinitionResponse -> a
forall d. ResponseMessage d -> a
response DefinitionResponse
m
    (RspDocumentColor            DocumentColorResponse
m) -> DocumentColorResponse -> a
forall d. ResponseMessage d -> a
response DocumentColorResponse
m
    (RspColorPresentation        ColorPresentationResponse
m) -> ColorPresentationResponse -> a
forall d. ResponseMessage d -> a
response ColorPresentationResponse
m
    (RspFoldingRange             FoldingRangeResponse
m) -> FoldingRangeResponse -> a
forall d. ResponseMessage d -> a
response FoldingRangeResponse
m
    (RspCustomServer             ExecuteCommandResponse
m) -> ExecuteCommandResponse -> a
forall d. ResponseMessage d -> a
response ExecuteCommandResponse
m
    (NotPublishDiagnostics       PublishDiagnosticsNotification
m) -> PublishDiagnosticsNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification PublishDiagnosticsNotification
m
    (NotLogMessage               LogMessageNotification
m) -> LogMessageNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification LogMessageNotification
m
    (NotShowMessage              ShowMessageNotification
m) -> ShowMessageNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification ShowMessageNotification
m
    (NotWorkDoneProgressBegin    WorkDoneProgressBeginNotification
m) -> WorkDoneProgressBeginNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification WorkDoneProgressBeginNotification
m
    (NotWorkDoneProgressReport   WorkDoneProgressReportNotification
m) -> WorkDoneProgressReportNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification WorkDoneProgressReportNotification
m
    (NotWorkDoneProgressEnd      WorkDoneProgressEndNotification
m) -> WorkDoneProgressEndNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification WorkDoneProgressEndNotification
m
    (NotTelemetry                TelemetryNotification
m) -> TelemetryNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification TelemetryNotification
m
    (NotCancelRequestFromServer  CancelNotificationServer
m) -> CancelNotificationServer -> a
forall e. NotificationMessage ServerMethod e -> a
notification CancelNotificationServer
m
    (NotCustomServer             TelemetryNotification
m) -> TelemetryNotification -> a
forall e. NotificationMessage ServerMethod e -> a
notification TelemetryNotification
m

handleClientMessage
    :: forall a.
       (forall b c . (ToJSON b, ToJSON c) => RequestMessage ClientMethod b c -> a)
    -> (forall d . ToJSON d => ResponseMessage d -> a)
    -> (forall e . ToJSON e => NotificationMessage ClientMethod e -> a)
    -> FromClientMessage
    -> a
handleClientMessage :: (forall b c.
 (ToJSON b, ToJSON c) =>
 RequestMessage ClientMethod b c -> a)
-> (forall d. ToJSON d => ResponseMessage d -> a)
-> (forall e. ToJSON e => NotificationMessage ClientMethod e -> a)
-> FromClientMessage
-> a
handleClientMessage forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request forall d. ToJSON d => ResponseMessage d -> a
response forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification FromClientMessage
msg = case FromClientMessage
msg of
 (ReqInitialize               InitializeRequest
m) -> InitializeRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request InitializeRequest
m
 (ReqShutdown                 ShutdownRequest
m) -> ShutdownRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request ShutdownRequest
m
 (ReqHover                    HoverRequest
m) -> HoverRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request HoverRequest
m
 (ReqCompletion               CompletionRequest
m) -> CompletionRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CompletionRequest
m
 (ReqCompletionItemResolve    CompletionItemResolveRequest
m) -> CompletionItemResolveRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CompletionItemResolveRequest
m
 (ReqSignatureHelp            SignatureHelpRequest
m) -> SignatureHelpRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request SignatureHelpRequest
m
 (ReqDefinition               DefinitionRequest
m) -> DefinitionRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DefinitionRequest
m
 (ReqFindReferences           ReferencesRequest
m) -> ReferencesRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request ReferencesRequest
m
 (ReqDocumentHighlights       DocumentHighlightRequest
m) -> DocumentHighlightRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentHighlightRequest
m
 (ReqDocumentSymbols          DocumentSymbolRequest
m) -> DocumentSymbolRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentSymbolRequest
m
 (ReqWorkspaceSymbols         WorkspaceSymbolRequest
m) -> WorkspaceSymbolRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request WorkspaceSymbolRequest
m
 (ReqCodeAction               CodeActionRequest
m) -> CodeActionRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CodeActionRequest
m
 (ReqCodeLens                 CodeLensRequest
m) -> CodeLensRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CodeLensRequest
m
 (ReqCodeLensResolve          CodeLensResolveRequest
m) -> CodeLensResolveRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CodeLensResolveRequest
m
 (ReqDocumentFormatting       DocumentFormattingRequest
m) -> DocumentFormattingRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentFormattingRequest
m
 (ReqDocumentRangeFormatting  DocumentRangeFormattingRequest
m) -> DocumentRangeFormattingRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentRangeFormattingRequest
m
 (ReqDocumentOnTypeFormatting DocumentOnTypeFormattingRequest
m) -> DocumentOnTypeFormattingRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentOnTypeFormattingRequest
m
 (ReqPrepareRename            PrepareRenameRequest
m) -> PrepareRenameRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request PrepareRenameRequest
m
 (ReqRename                   RenameRequest
m) -> RenameRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request RenameRequest
m
 (ReqExecuteCommand           ExecuteCommandRequest
m) -> ExecuteCommandRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request ExecuteCommandRequest
m
 (ReqDocumentLink             DocumentLinkRequest
m) -> DocumentLinkRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentLinkRequest
m
 (ReqDocumentLinkResolve      DocumentLinkResolveRequest
m) -> DocumentLinkResolveRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentLinkResolveRequest
m
 (ReqWillSaveWaitUntil        WillSaveWaitUntilTextDocumentRequest
m) -> WillSaveWaitUntilTextDocumentRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request WillSaveWaitUntilTextDocumentRequest
m
 (ReqImplementation           DefinitionRequest
m) -> DefinitionRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DefinitionRequest
m
 (ReqTypeDefinition           DefinitionRequest
m) -> DefinitionRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DefinitionRequest
m
 (ReqDocumentColor            DocumentColorRequest
m) -> DocumentColorRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request DocumentColorRequest
m
 (ReqColorPresentation        ColorPresentationRequest
m) -> ColorPresentationRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request ColorPresentationRequest
m
 (ReqFoldingRange             FoldingRangeRequest
m) -> FoldingRangeRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request FoldingRangeRequest
m
 (RspApplyWorkspaceEdit       ApplyWorkspaceEditResponse
m) -> ApplyWorkspaceEditResponse -> a
forall d. ToJSON d => ResponseMessage d -> a
response ApplyWorkspaceEditResponse
m
 (RspFromClient               ExecuteCommandResponse
m) -> ExecuteCommandResponse -> a
forall d. ToJSON d => ResponseMessage d -> a
response ExecuteCommandResponse
m
 (NotInitialized              InitializedNotification
m) -> InitializedNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification InitializedNotification
m
 (NotExit                     ExitNotification
m) -> ExitNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification ExitNotification
m
 (NotCancelRequestFromClient  CancelNotification
m) -> CancelNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification CancelNotification
m
 (NotDidChangeConfiguration   DidChangeConfigurationNotification
m) -> DidChangeConfigurationNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidChangeConfigurationNotification
m
 (NotDidOpenTextDocument      DidOpenTextDocumentNotification
m) -> DidOpenTextDocumentNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidOpenTextDocumentNotification
m
 (NotDidChangeTextDocument    DidChangeTextDocumentNotification
m) -> DidChangeTextDocumentNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidChangeTextDocumentNotification
m
 (NotDidCloseTextDocument     DidCloseTextDocumentNotification
m) -> DidCloseTextDocumentNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidCloseTextDocumentNotification
m
 (NotWillSaveTextDocument     WillSaveTextDocumentNotification
m) -> WillSaveTextDocumentNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification WillSaveTextDocumentNotification
m
 (NotDidSaveTextDocument      DidSaveTextDocumentNotification
m) -> DidSaveTextDocumentNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidSaveTextDocumentNotification
m
 (NotDidChangeWatchedFiles    DidChangeWatchedFilesNotification
m) -> DidChangeWatchedFilesNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidChangeWatchedFilesNotification
m
 (NotDidChangeWorkspaceFolders DidChangeWorkspaceFoldersNotification
m) -> DidChangeWorkspaceFoldersNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification DidChangeWorkspaceFoldersNotification
m
 (NotWorkDoneProgressCancel    WorkDoneProgressCancelNotification
m) -> WorkDoneProgressCancelNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification WorkDoneProgressCancelNotification
m
 (ReqCustomClient             CustomClientRequest
m) -> CustomClientRequest -> a
forall b c.
(ToJSON b, ToJSON c) =>
RequestMessage ClientMethod b c -> a
request CustomClientRequest
m
 (NotCustomClient             CustomClientNotification
m) -> CustomClientNotification -> a
forall e. ToJSON e => NotificationMessage ClientMethod e -> a
notification CustomClientNotification
m