Skip to content

Commit 0d32c95

Browse files
committed
Add callHierarchy/outgoingCalls
1 parent 4701215 commit 0d32c95

File tree

5 files changed

+30
-1
lines changed

5 files changed

+30
-1
lines changed

lsp-types/src/Language/LSP/Types/CallHierarchy.hs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,3 +98,24 @@ data CallHierarchyIncomingCall = CallHierarchyIncomingCall
9898
deriving (Read, Show, Eq)
9999

100100
deriveJSON lspOptions ''CallHierarchyIncomingCall
101+
102+
-- -------------------------------------
103+
104+
makeExtendingDatatype
105+
"CallHierarchyOutgoingCallsParams"
106+
[''WorkDoneProgressParams, ''PartialResultParams]
107+
[("_item", [t|CallHierarchyItem|])]
108+
deriveJSON lspOptions ''CallHierarchyOutgoingCallsParams
109+
110+
-- -------------------------------------
111+
112+
data CallHierarchyOutgoingCall = CallHierarchyOutgoingCall
113+
{ -- | The item that is called.
114+
_from :: CallHierarchyItem,
115+
-- | The range at which this item is called. This is the range relative to
116+
-- the caller, e.g the item passed to `callHierarchy/outgoingCalls` request.
117+
_fromRanges :: List Range
118+
}
119+
deriving (Read, Show, Eq)
120+
121+
deriveJSON lspOptions ''CallHierarchyOutgoingCall

lsp-types/src/Language/LSP/Types/Message.hs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ type family MessageParams (m :: Method f t) :: Type where
124124
-- Call Hierarchy
125125
MessageParams TextDocumentCallHierarchy = CallHierarchyPrepareParams
126126
MessageParams CallHierarchyIncomingCalls = CallHierarchyIncomingCallsParams
127+
MessageParams CallHierarchyOutgoingCalls = CallHierarchyOutgoingCallsParams
127128
-- Server
128129
-- Window
129130
MessageParams WindowShowMessage = ShowMessageParams
@@ -200,6 +201,7 @@ type family ResponseResult (m :: Method f Request) :: Type where
200201
-- Call Hierarchy
201202
ResponseResult TextDocumentCallHierarchy = List CallHierarchyItem
202203
ResponseResult CallHierarchyIncomingCalls = List CallHierarchyIncomingCall
204+
ResponseResult CallHierarchyOutgoingCalls = List CallHierarchyOutgoingCall
203205
-- Custom can be either a notification or a message
204206
-- Server
205207
-- Window

lsp-types/src/Language/LSP/Types/Method.hs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ data Method (f :: From) (t :: MethodType) where
7878
-- Call Hierarchy
7979
TextDocumentCallHierarchy :: Method FromClient Request
8080
CallHierarchyIncomingCalls :: Method FromClient Request
81+
CallHierarchyOutgoingCalls :: Method FromClient Request
8182

8283
-- ServerMethods
8384
-- Window
@@ -150,6 +151,7 @@ data SMethod (m :: Method f t) where
150151
STextDocumentSelectionRange :: SMethod TextDocumentSelectionRange
151152
STextDocumentCallHierarchy :: SMethod TextDocumentCallHierarchy
152153
SCallHierarchyIncomingCalls :: SMethod CallHierarchyIncomingCalls
154+
SCallHierarchyOutgoingCalls :: SMethod CallHierarchyOutgoingCalls
153155

154156
SWindowShowMessage :: SMethod WindowShowMessage
155157
SWindowShowMessageRequest :: SMethod WindowShowMessageRequest
@@ -275,6 +277,7 @@ instance FromJSON SomeClientMethod where
275277
parseJSON (A.String "textDocument/selectionRange") = pure $ SomeClientMethod STextDocumentFoldingRange
276278
parseJSON (A.String "textDocument/prepareCallHierarchy") = pure $ SomeClientMethod STextDocumentCallHierarchy
277279
parseJSON (A.String "callHierarchy/incomingCalls") = pure $ SomeClientMethod SCallHierarchyIncomingCalls
280+
parseJSON (A.String "callHierarchy/outgoingCalls") = pure $ SomeClientMethod SCallHierarchyOutgoingCalls
278281
parseJSON (A.String "window/workDoneProgress/cancel") = pure $ SomeClientMethod SWindowWorkDoneProgressCancel
279282
-- Cancelling
280283
parseJSON (A.String "$/cancelRequest") = pure $ SomeClientMethod SCancelRequest
@@ -369,6 +372,7 @@ instance A.ToJSON (SMethod m) where
369372
toJSON STextDocumentDocumentLink = A.String "textDocument/documentLink"
370373
toJSON STextDocumentCallHierarchy = A.String "textDocument/prepareCallHierarchy"
371374
toJSON SCallHierarchyIncomingCalls = A.String "callHierarchy/incomingCalls"
375+
toJSON SCallHierarchyOutgoingCalls = A.String "callHierarchy/outgoingCalls"
372376
toJSON SDocumentLinkResolve = A.String "documentLink/resolve"
373377
toJSON SWindowWorkDoneProgressCancel = A.String "window/workDoneProgress/cancel"
374378
-- Server

lsp-types/src/Language/LSP/Types/Parsing.hs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ splitClientMethod STextDocumentFoldingRange = IsClientReq
252252
splitClientMethod STextDocumentSelectionRange = IsClientReq
253253
splitClientMethod STextDocumentCallHierarchy = IsClientReq
254254
splitClientMethod SCallHierarchyIncomingCalls = IsClientReq
255+
splitClientMethod SCallHierarchyOutgoingCalls = IsClientReq
255256
splitClientMethod SCancelRequest = IsClientNot
256257
splitClientMethod SCustomMethod{} = IsClientEither
257258

lsp/test/MethodSpec.hs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ clientMethods = [
5757
,"textDocument/rename"
5858
,"textDocument/prepareRename"
5959
,"textDocument/prepareCallHierarchy"
60-
,"callHierarchy/incomingCalls"
60+
,"callHierarchy/incomingCalls",
61+
,"callHierarchy/outgoingCalls"
6162
]
6263

6364
serverMethods :: [T.Text]

0 commit comments

Comments
 (0)