1package protocol
2
3// Package protocol contains data types and code for LSP jsonrpcs
4// generated automatically from vscode-languageserver-node
5// commit: 7b90c29d0cb5cd7b9c41084f6cb3781a955adeba
6// last fetched Wed Feb 12 2020 17:16:47 GMT-0500 (Eastern Standard Time)
7
8// Code generated (see typescript/README.md) DO NOT EDIT.
9
10import (
11	"context"
12	"encoding/json"
13
14	"golang.org/x/tools/internal/jsonrpc2"
15	"golang.org/x/tools/internal/telemetry/log"
16	"golang.org/x/tools/internal/xcontext"
17)
18
19type Server interface {
20	DidChangeWorkspaceFolders(context.Context, *DidChangeWorkspaceFoldersParams) error
21	WorkDoneProgressCancel(context.Context, *WorkDoneProgressCancelParams) error
22	Initialized(context.Context, *InitializedParams) error
23	Exit(context.Context) error
24	DidChangeConfiguration(context.Context, *DidChangeConfigurationParams) error
25	DidOpen(context.Context, *DidOpenTextDocumentParams) error
26	DidChange(context.Context, *DidChangeTextDocumentParams) error
27	DidClose(context.Context, *DidCloseTextDocumentParams) error
28	DidSave(context.Context, *DidSaveTextDocumentParams) error
29	WillSave(context.Context, *WillSaveTextDocumentParams) error
30	DidChangeWatchedFiles(context.Context, *DidChangeWatchedFilesParams) error
31	Progress(context.Context, *ProgressParams) error
32	SetTraceNotification(context.Context, *SetTraceParams) error
33	LogTraceNotification(context.Context, *LogTraceParams) error
34	Implementation(context.Context, *ImplementationParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
35	TypeDefinition(context.Context, *TypeDefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
36	DocumentColor(context.Context, *DocumentColorParams) ([]ColorInformation, error)
37	ColorPresentation(context.Context, *ColorPresentationParams) ([]ColorPresentation, error)
38	FoldingRange(context.Context, *FoldingRangeParams) ([]FoldingRange /*FoldingRange[] | null*/, error)
39	Declaration(context.Context, *DeclarationParams) (Declaration /*Declaration | DeclarationLink[] | null*/, error)
40	SelectionRange(context.Context, *SelectionRangeParams) ([]SelectionRange /*SelectionRange[] | null*/, error)
41	WorkDoneProgressCreate(context.Context, *WorkDoneProgressCreateParams) error
42	Initialize(context.Context, *ParamInitialize) (*InitializeResult, error)
43	Shutdown(context.Context) error
44	WillSaveWaitUntil(context.Context, *WillSaveTextDocumentParams) ([]TextEdit /*TextEdit[] | null*/, error)
45	Completion(context.Context, *CompletionParams) (*CompletionList /*CompletionItem[] | CompletionList | null*/, error)
46	Resolve(context.Context, *CompletionItem) (*CompletionItem, error)
47	Hover(context.Context, *HoverParams) (*Hover /*Hover | null*/, error)
48	SignatureHelp(context.Context, *SignatureHelpParams) (*SignatureHelp /*SignatureHelp | null*/, error)
49	Definition(context.Context, *DefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error)
50	References(context.Context, *ReferenceParams) ([]Location /*Location[] | null*/, error)
51	DocumentHighlight(context.Context, *DocumentHighlightParams) ([]DocumentHighlight /*DocumentHighlight[] | null*/, error)
52	DocumentSymbol(context.Context, *DocumentSymbolParams) ([]DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/, error)
53	CodeAction(context.Context, *CodeActionParams) ([]CodeAction /*(Command | CodeAction)[] | null*/, error)
54	Symbol(context.Context, *WorkspaceSymbolParams) ([]SymbolInformation /*SymbolInformation[] | null*/, error)
55	CodeLens(context.Context, *CodeLensParams) ([]CodeLens /*CodeLens[] | null*/, error)
56	ResolveCodeLens(context.Context, *CodeLens) (*CodeLens, error)
57	DocumentLink(context.Context, *DocumentLinkParams) ([]DocumentLink /*DocumentLink[] | null*/, error)
58	ResolveDocumentLink(context.Context, *DocumentLink) (*DocumentLink, error)
59	Formatting(context.Context, *DocumentFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
60	RangeFormatting(context.Context, *DocumentRangeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
61	OnTypeFormatting(context.Context, *DocumentOnTypeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error)
62	Rename(context.Context, *RenameParams) (*WorkspaceEdit /*WorkspaceEdit | null*/, error)
63	PrepareRename(context.Context, *PrepareRenameParams) (*Range /*Range | { range: Range, placeholder: string } | null*/, error)
64	ExecuteCommand(context.Context, *ExecuteCommandParams) (interface{} /*any | null*/, error)
65	PrepareCallHierarchy(context.Context, *CallHierarchyPrepareParams) ([]CallHierarchyItem /*CallHierarchyItem[] | null*/, error)
66	IncomingCalls(context.Context, *CallHierarchyIncomingCallsParams) ([]CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/, error)
67	OutgoingCalls(context.Context, *CallHierarchyOutgoingCallsParams) ([]CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/, error)
68	SemanticTokens(context.Context, *SemanticTokensParams) (*SemanticTokens /*SemanticTokens | null*/, error)
69	SemanticTokensEdits(context.Context, *SemanticTokensEditsParams) (interface{} /* SemanticTokens | SemanticTokensEdits | nil*/, error)
70	SemanticTokensRange(context.Context, *SemanticTokensRangeParams) (*SemanticTokens /*SemanticTokens | null*/, error)
71	NonstandardRequest(ctx context.Context, method string, params interface{}) (interface{}, error)
72}
73
74func (h serverHandler) Deliver(ctx context.Context, r *jsonrpc2.Request, delivered bool) bool {
75	if delivered {
76		return false
77	}
78	if ctx.Err() != nil {
79		ctx := xcontext.Detach(ctx)
80		r.Reply(ctx, nil, jsonrpc2.NewErrorf(RequestCancelledError, ""))
81		return true
82	}
83	switch r.Method {
84	case "workspace/didChangeWorkspaceFolders": // notif
85		var params DidChangeWorkspaceFoldersParams
86		if err := json.Unmarshal(*r.Params, &params); err != nil {
87			sendParseError(ctx, r, err)
88			return true
89		}
90		if err := h.server.DidChangeWorkspaceFolders(ctx, &params); err != nil {
91			log.Error(ctx, "", err)
92		}
93		return true
94	case "window/workDoneProgress/cancel": // notif
95		var params WorkDoneProgressCancelParams
96		if err := json.Unmarshal(*r.Params, &params); err != nil {
97			sendParseError(ctx, r, err)
98			return true
99		}
100		if err := h.server.WorkDoneProgressCancel(ctx, &params); err != nil {
101			log.Error(ctx, "", err)
102		}
103		return true
104	case "initialized": // notif
105		var params InitializedParams
106		if err := json.Unmarshal(*r.Params, &params); err != nil {
107			sendParseError(ctx, r, err)
108			return true
109		}
110		if err := h.server.Initialized(ctx, &params); err != nil {
111			log.Error(ctx, "", err)
112		}
113		return true
114	case "exit": // notif
115		if err := h.server.Exit(ctx); err != nil {
116			log.Error(ctx, "", err)
117		}
118		return true
119	case "workspace/didChangeConfiguration": // notif
120		var params DidChangeConfigurationParams
121		if err := json.Unmarshal(*r.Params, &params); err != nil {
122			sendParseError(ctx, r, err)
123			return true
124		}
125		if err := h.server.DidChangeConfiguration(ctx, &params); err != nil {
126			log.Error(ctx, "", err)
127		}
128		return true
129	case "textDocument/didOpen": // notif
130		var params DidOpenTextDocumentParams
131		if err := json.Unmarshal(*r.Params, &params); err != nil {
132			sendParseError(ctx, r, err)
133			return true
134		}
135		if err := h.server.DidOpen(ctx, &params); err != nil {
136			log.Error(ctx, "", err)
137		}
138		return true
139	case "textDocument/didChange": // notif
140		var params DidChangeTextDocumentParams
141		if err := json.Unmarshal(*r.Params, &params); err != nil {
142			sendParseError(ctx, r, err)
143			return true
144		}
145		if err := h.server.DidChange(ctx, &params); err != nil {
146			log.Error(ctx, "", err)
147		}
148		return true
149	case "textDocument/didClose": // notif
150		var params DidCloseTextDocumentParams
151		if err := json.Unmarshal(*r.Params, &params); err != nil {
152			sendParseError(ctx, r, err)
153			return true
154		}
155		if err := h.server.DidClose(ctx, &params); err != nil {
156			log.Error(ctx, "", err)
157		}
158		return true
159	case "textDocument/didSave": // notif
160		var params DidSaveTextDocumentParams
161		if err := json.Unmarshal(*r.Params, &params); err != nil {
162			sendParseError(ctx, r, err)
163			return true
164		}
165		if err := h.server.DidSave(ctx, &params); err != nil {
166			log.Error(ctx, "", err)
167		}
168		return true
169	case "textDocument/willSave": // notif
170		var params WillSaveTextDocumentParams
171		if err := json.Unmarshal(*r.Params, &params); err != nil {
172			sendParseError(ctx, r, err)
173			return true
174		}
175		if err := h.server.WillSave(ctx, &params); err != nil {
176			log.Error(ctx, "", err)
177		}
178		return true
179	case "workspace/didChangeWatchedFiles": // notif
180		var params DidChangeWatchedFilesParams
181		if err := json.Unmarshal(*r.Params, &params); err != nil {
182			sendParseError(ctx, r, err)
183			return true
184		}
185		if err := h.server.DidChangeWatchedFiles(ctx, &params); err != nil {
186			log.Error(ctx, "", err)
187		}
188		return true
189	case "$/progress": // notif
190		var params ProgressParams
191		if err := json.Unmarshal(*r.Params, &params); err != nil {
192			sendParseError(ctx, r, err)
193			return true
194		}
195		if err := h.server.Progress(ctx, &params); err != nil {
196			log.Error(ctx, "", err)
197		}
198		return true
199	case "$/setTraceNotification": // notif
200		var params SetTraceParams
201		if err := json.Unmarshal(*r.Params, &params); err != nil {
202			sendParseError(ctx, r, err)
203			return true
204		}
205		if err := h.server.SetTraceNotification(ctx, &params); err != nil {
206			log.Error(ctx, "", err)
207		}
208		return true
209	case "$/logTraceNotification": // notif
210		var params LogTraceParams
211		if err := json.Unmarshal(*r.Params, &params); err != nil {
212			sendParseError(ctx, r, err)
213			return true
214		}
215		if err := h.server.LogTraceNotification(ctx, &params); err != nil {
216			log.Error(ctx, "", err)
217		}
218		return true
219	case "textDocument/implementation": // req
220		var params ImplementationParams
221		if err := json.Unmarshal(*r.Params, &params); err != nil {
222			sendParseError(ctx, r, err)
223			return true
224		}
225		resp, err := h.server.Implementation(ctx, &params)
226		if err := r.Reply(ctx, resp, err); err != nil {
227			log.Error(ctx, "", err)
228		}
229		return true
230	case "textDocument/typeDefinition": // req
231		var params TypeDefinitionParams
232		if err := json.Unmarshal(*r.Params, &params); err != nil {
233			sendParseError(ctx, r, err)
234			return true
235		}
236		resp, err := h.server.TypeDefinition(ctx, &params)
237		if err := r.Reply(ctx, resp, err); err != nil {
238			log.Error(ctx, "", err)
239		}
240		return true
241	case "textDocument/documentColor": // req
242		var params DocumentColorParams
243		if err := json.Unmarshal(*r.Params, &params); err != nil {
244			sendParseError(ctx, r, err)
245			return true
246		}
247		resp, err := h.server.DocumentColor(ctx, &params)
248		if err := r.Reply(ctx, resp, err); err != nil {
249			log.Error(ctx, "", err)
250		}
251		return true
252	case "textDocument/colorPresentation": // req
253		var params ColorPresentationParams
254		if err := json.Unmarshal(*r.Params, &params); err != nil {
255			sendParseError(ctx, r, err)
256			return true
257		}
258		resp, err := h.server.ColorPresentation(ctx, &params)
259		if err := r.Reply(ctx, resp, err); err != nil {
260			log.Error(ctx, "", err)
261		}
262		return true
263	case "textDocument/foldingRange": // req
264		var params FoldingRangeParams
265		if err := json.Unmarshal(*r.Params, &params); err != nil {
266			sendParseError(ctx, r, err)
267			return true
268		}
269		resp, err := h.server.FoldingRange(ctx, &params)
270		if err := r.Reply(ctx, resp, err); err != nil {
271			log.Error(ctx, "", err)
272		}
273		return true
274	case "textDocument/declaration": // req
275		var params DeclarationParams
276		if err := json.Unmarshal(*r.Params, &params); err != nil {
277			sendParseError(ctx, r, err)
278			return true
279		}
280		resp, err := h.server.Declaration(ctx, &params)
281		if err := r.Reply(ctx, resp, err); err != nil {
282			log.Error(ctx, "", err)
283		}
284		return true
285	case "textDocument/selectionRange": // req
286		var params SelectionRangeParams
287		if err := json.Unmarshal(*r.Params, &params); err != nil {
288			sendParseError(ctx, r, err)
289			return true
290		}
291		resp, err := h.server.SelectionRange(ctx, &params)
292		if err := r.Reply(ctx, resp, err); err != nil {
293			log.Error(ctx, "", err)
294		}
295		return true
296	case "window/workDoneProgress/create": // req
297		var params WorkDoneProgressCreateParams
298		if err := json.Unmarshal(*r.Params, &params); err != nil {
299			sendParseError(ctx, r, err)
300			return true
301		}
302		err := h.server.WorkDoneProgressCreate(ctx, &params)
303		if err := r.Reply(ctx, nil, err); err != nil {
304			log.Error(ctx, "", err)
305		}
306		return true
307	case "initialize": // req
308		var params ParamInitialize
309		if err := json.Unmarshal(*r.Params, &params); err != nil {
310			sendParseError(ctx, r, err)
311			return true
312		}
313		resp, err := h.server.Initialize(ctx, &params)
314		if err := r.Reply(ctx, resp, err); err != nil {
315			log.Error(ctx, "", err)
316		}
317		return true
318	case "shutdown": // req
319		if r.Params != nil {
320			r.Reply(ctx, nil, jsonrpc2.NewErrorf(jsonrpc2.CodeInvalidParams, "Expected no params"))
321			return true
322		}
323		err := h.server.Shutdown(ctx)
324		if err := r.Reply(ctx, nil, err); err != nil {
325			log.Error(ctx, "", err)
326		}
327		return true
328	case "textDocument/willSaveWaitUntil": // req
329		var params WillSaveTextDocumentParams
330		if err := json.Unmarshal(*r.Params, &params); err != nil {
331			sendParseError(ctx, r, err)
332			return true
333		}
334		resp, err := h.server.WillSaveWaitUntil(ctx, &params)
335		if err := r.Reply(ctx, resp, err); err != nil {
336			log.Error(ctx, "", err)
337		}
338		return true
339	case "textDocument/completion": // req
340		var params CompletionParams
341		if err := json.Unmarshal(*r.Params, &params); err != nil {
342			sendParseError(ctx, r, err)
343			return true
344		}
345		resp, err := h.server.Completion(ctx, &params)
346		if err := r.Reply(ctx, resp, err); err != nil {
347			log.Error(ctx, "", err)
348		}
349		return true
350	case "completionItem/resolve": // req
351		var params CompletionItem
352		if err := json.Unmarshal(*r.Params, &params); err != nil {
353			sendParseError(ctx, r, err)
354			return true
355		}
356		resp, err := h.server.Resolve(ctx, &params)
357		if err := r.Reply(ctx, resp, err); err != nil {
358			log.Error(ctx, "", err)
359		}
360		return true
361	case "textDocument/hover": // req
362		var params HoverParams
363		if err := json.Unmarshal(*r.Params, &params); err != nil {
364			sendParseError(ctx, r, err)
365			return true
366		}
367		resp, err := h.server.Hover(ctx, &params)
368		if err := r.Reply(ctx, resp, err); err != nil {
369			log.Error(ctx, "", err)
370		}
371		return true
372	case "textDocument/signatureHelp": // req
373		var params SignatureHelpParams
374		if err := json.Unmarshal(*r.Params, &params); err != nil {
375			sendParseError(ctx, r, err)
376			return true
377		}
378		resp, err := h.server.SignatureHelp(ctx, &params)
379		if err := r.Reply(ctx, resp, err); err != nil {
380			log.Error(ctx, "", err)
381		}
382		return true
383	case "textDocument/definition": // req
384		var params DefinitionParams
385		if err := json.Unmarshal(*r.Params, &params); err != nil {
386			sendParseError(ctx, r, err)
387			return true
388		}
389		resp, err := h.server.Definition(ctx, &params)
390		if err := r.Reply(ctx, resp, err); err != nil {
391			log.Error(ctx, "", err)
392		}
393		return true
394	case "textDocument/references": // req
395		var params ReferenceParams
396		if err := json.Unmarshal(*r.Params, &params); err != nil {
397			sendParseError(ctx, r, err)
398			return true
399		}
400		resp, err := h.server.References(ctx, &params)
401		if err := r.Reply(ctx, resp, err); err != nil {
402			log.Error(ctx, "", err)
403		}
404		return true
405	case "textDocument/documentHighlight": // req
406		var params DocumentHighlightParams
407		if err := json.Unmarshal(*r.Params, &params); err != nil {
408			sendParseError(ctx, r, err)
409			return true
410		}
411		resp, err := h.server.DocumentHighlight(ctx, &params)
412		if err := r.Reply(ctx, resp, err); err != nil {
413			log.Error(ctx, "", err)
414		}
415		return true
416	case "textDocument/documentSymbol": // req
417		var params DocumentSymbolParams
418		if err := json.Unmarshal(*r.Params, &params); err != nil {
419			sendParseError(ctx, r, err)
420			return true
421		}
422		resp, err := h.server.DocumentSymbol(ctx, &params)
423		if err := r.Reply(ctx, resp, err); err != nil {
424			log.Error(ctx, "", err)
425		}
426		return true
427	case "textDocument/codeAction": // req
428		var params CodeActionParams
429		if err := json.Unmarshal(*r.Params, &params); err != nil {
430			sendParseError(ctx, r, err)
431			return true
432		}
433		resp, err := h.server.CodeAction(ctx, &params)
434		if err := r.Reply(ctx, resp, err); err != nil {
435			log.Error(ctx, "", err)
436		}
437		return true
438	case "workspace/symbol": // req
439		var params WorkspaceSymbolParams
440		if err := json.Unmarshal(*r.Params, &params); err != nil {
441			sendParseError(ctx, r, err)
442			return true
443		}
444		resp, err := h.server.Symbol(ctx, &params)
445		if err := r.Reply(ctx, resp, err); err != nil {
446			log.Error(ctx, "", err)
447		}
448		return true
449	case "textDocument/codeLens": // req
450		var params CodeLensParams
451		if err := json.Unmarshal(*r.Params, &params); err != nil {
452			sendParseError(ctx, r, err)
453			return true
454		}
455		resp, err := h.server.CodeLens(ctx, &params)
456		if err := r.Reply(ctx, resp, err); err != nil {
457			log.Error(ctx, "", err)
458		}
459		return true
460	case "codeLens/resolve": // req
461		var params CodeLens
462		if err := json.Unmarshal(*r.Params, &params); err != nil {
463			sendParseError(ctx, r, err)
464			return true
465		}
466		resp, err := h.server.ResolveCodeLens(ctx, &params)
467		if err := r.Reply(ctx, resp, err); err != nil {
468			log.Error(ctx, "", err)
469		}
470		return true
471	case "textDocument/documentLink": // req
472		var params DocumentLinkParams
473		if err := json.Unmarshal(*r.Params, &params); err != nil {
474			sendParseError(ctx, r, err)
475			return true
476		}
477		resp, err := h.server.DocumentLink(ctx, &params)
478		if err := r.Reply(ctx, resp, err); err != nil {
479			log.Error(ctx, "", err)
480		}
481		return true
482	case "documentLink/resolve": // req
483		var params DocumentLink
484		if err := json.Unmarshal(*r.Params, &params); err != nil {
485			sendParseError(ctx, r, err)
486			return true
487		}
488		resp, err := h.server.ResolveDocumentLink(ctx, &params)
489		if err := r.Reply(ctx, resp, err); err != nil {
490			log.Error(ctx, "", err)
491		}
492		return true
493	case "textDocument/formatting": // req
494		var params DocumentFormattingParams
495		if err := json.Unmarshal(*r.Params, &params); err != nil {
496			sendParseError(ctx, r, err)
497			return true
498		}
499		resp, err := h.server.Formatting(ctx, &params)
500		if err := r.Reply(ctx, resp, err); err != nil {
501			log.Error(ctx, "", err)
502		}
503		return true
504	case "textDocument/rangeFormatting": // req
505		var params DocumentRangeFormattingParams
506		if err := json.Unmarshal(*r.Params, &params); err != nil {
507			sendParseError(ctx, r, err)
508			return true
509		}
510		resp, err := h.server.RangeFormatting(ctx, &params)
511		if err := r.Reply(ctx, resp, err); err != nil {
512			log.Error(ctx, "", err)
513		}
514		return true
515	case "textDocument/onTypeFormatting": // req
516		var params DocumentOnTypeFormattingParams
517		if err := json.Unmarshal(*r.Params, &params); err != nil {
518			sendParseError(ctx, r, err)
519			return true
520		}
521		resp, err := h.server.OnTypeFormatting(ctx, &params)
522		if err := r.Reply(ctx, resp, err); err != nil {
523			log.Error(ctx, "", err)
524		}
525		return true
526	case "textDocument/rename": // req
527		var params RenameParams
528		if err := json.Unmarshal(*r.Params, &params); err != nil {
529			sendParseError(ctx, r, err)
530			return true
531		}
532		resp, err := h.server.Rename(ctx, &params)
533		if err := r.Reply(ctx, resp, err); err != nil {
534			log.Error(ctx, "", err)
535		}
536		return true
537	case "textDocument/prepareRename": // req
538		var params PrepareRenameParams
539		if err := json.Unmarshal(*r.Params, &params); err != nil {
540			sendParseError(ctx, r, err)
541			return true
542		}
543		resp, err := h.server.PrepareRename(ctx, &params)
544		if err := r.Reply(ctx, resp, err); err != nil {
545			log.Error(ctx, "", err)
546		}
547		return true
548	case "workspace/executeCommand": // req
549		var params ExecuteCommandParams
550		if err := json.Unmarshal(*r.Params, &params); err != nil {
551			sendParseError(ctx, r, err)
552			return true
553		}
554		resp, err := h.server.ExecuteCommand(ctx, &params)
555		if err := r.Reply(ctx, resp, err); err != nil {
556			log.Error(ctx, "", err)
557		}
558		return true
559	case "textDocument/prepareCallHierarchy": // req
560		var params CallHierarchyPrepareParams
561		if err := json.Unmarshal(*r.Params, &params); err != nil {
562			sendParseError(ctx, r, err)
563			return true
564		}
565		resp, err := h.server.PrepareCallHierarchy(ctx, &params)
566		if err := r.Reply(ctx, resp, err); err != nil {
567			log.Error(ctx, "", err)
568		}
569		return true
570	case "callHierarchy/incomingCalls": // req
571		var params CallHierarchyIncomingCallsParams
572		if err := json.Unmarshal(*r.Params, &params); err != nil {
573			sendParseError(ctx, r, err)
574			return true
575		}
576		resp, err := h.server.IncomingCalls(ctx, &params)
577		if err := r.Reply(ctx, resp, err); err != nil {
578			log.Error(ctx, "", err)
579		}
580		return true
581	case "callHierarchy/outgoingCalls": // req
582		var params CallHierarchyOutgoingCallsParams
583		if err := json.Unmarshal(*r.Params, &params); err != nil {
584			sendParseError(ctx, r, err)
585			return true
586		}
587		resp, err := h.server.OutgoingCalls(ctx, &params)
588		if err := r.Reply(ctx, resp, err); err != nil {
589			log.Error(ctx, "", err)
590		}
591		return true
592	case "textDocument/semanticTokens": // req
593		var params SemanticTokensParams
594		if err := json.Unmarshal(*r.Params, &params); err != nil {
595			sendParseError(ctx, r, err)
596			return true
597		}
598		resp, err := h.server.SemanticTokens(ctx, &params)
599		if err := r.Reply(ctx, resp, err); err != nil {
600			log.Error(ctx, "", err)
601		}
602		return true
603	case "textDocument/semanticTokens/edits": // req
604		var params SemanticTokensEditsParams
605		if err := json.Unmarshal(*r.Params, &params); err != nil {
606			sendParseError(ctx, r, err)
607			return true
608		}
609		resp, err := h.server.SemanticTokensEdits(ctx, &params)
610		if err := r.Reply(ctx, resp, err); err != nil {
611			log.Error(ctx, "", err)
612		}
613		return true
614	case "textDocument/semanticTokens/range": // req
615		var params SemanticTokensRangeParams
616		if err := json.Unmarshal(*r.Params, &params); err != nil {
617			sendParseError(ctx, r, err)
618			return true
619		}
620		resp, err := h.server.SemanticTokensRange(ctx, &params)
621		if err := r.Reply(ctx, resp, err); err != nil {
622			log.Error(ctx, "", err)
623		}
624		return true
625	default:
626		var params interface{}
627		if err := json.Unmarshal(*r.Params, &params); err != nil {
628			sendParseError(ctx, r, err)
629			return true
630		}
631		resp, err := h.server.NonstandardRequest(ctx, r.Method, params)
632		if err := r.Reply(ctx, resp, err); err != nil {
633			log.Error(ctx, "", err)
634		}
635		return true
636
637	}
638}
639
640type serverDispatcher struct {
641	*jsonrpc2.Conn
642}
643
644func (s *serverDispatcher) DidChangeWorkspaceFolders(ctx context.Context, params *DidChangeWorkspaceFoldersParams) error {
645	return s.Conn.Notify(ctx, "workspace/didChangeWorkspaceFolders", params)
646}
647
648func (s *serverDispatcher) WorkDoneProgressCancel(ctx context.Context, params *WorkDoneProgressCancelParams) error {
649	return s.Conn.Notify(ctx, "window/workDoneProgress/cancel", params)
650}
651
652func (s *serverDispatcher) Initialized(ctx context.Context, params *InitializedParams) error {
653	return s.Conn.Notify(ctx, "initialized", params)
654}
655
656func (s *serverDispatcher) Exit(ctx context.Context) error {
657	return s.Conn.Notify(ctx, "exit", nil)
658}
659
660func (s *serverDispatcher) DidChangeConfiguration(ctx context.Context, params *DidChangeConfigurationParams) error {
661	return s.Conn.Notify(ctx, "workspace/didChangeConfiguration", params)
662}
663
664func (s *serverDispatcher) DidOpen(ctx context.Context, params *DidOpenTextDocumentParams) error {
665	return s.Conn.Notify(ctx, "textDocument/didOpen", params)
666}
667
668func (s *serverDispatcher) DidChange(ctx context.Context, params *DidChangeTextDocumentParams) error {
669	return s.Conn.Notify(ctx, "textDocument/didChange", params)
670}
671
672func (s *serverDispatcher) DidClose(ctx context.Context, params *DidCloseTextDocumentParams) error {
673	return s.Conn.Notify(ctx, "textDocument/didClose", params)
674}
675
676func (s *serverDispatcher) DidSave(ctx context.Context, params *DidSaveTextDocumentParams) error {
677	return s.Conn.Notify(ctx, "textDocument/didSave", params)
678}
679
680func (s *serverDispatcher) WillSave(ctx context.Context, params *WillSaveTextDocumentParams) error {
681	return s.Conn.Notify(ctx, "textDocument/willSave", params)
682}
683
684func (s *serverDispatcher) DidChangeWatchedFiles(ctx context.Context, params *DidChangeWatchedFilesParams) error {
685	return s.Conn.Notify(ctx, "workspace/didChangeWatchedFiles", params)
686}
687
688func (s *serverDispatcher) Progress(ctx context.Context, params *ProgressParams) error {
689	return s.Conn.Notify(ctx, "$/progress", params)
690}
691
692func (s *serverDispatcher) SetTraceNotification(ctx context.Context, params *SetTraceParams) error {
693	return s.Conn.Notify(ctx, "$/setTraceNotification", params)
694}
695
696func (s *serverDispatcher) LogTraceNotification(ctx context.Context, params *LogTraceParams) error {
697	return s.Conn.Notify(ctx, "$/logTraceNotification", params)
698}
699func (s *serverDispatcher) Implementation(ctx context.Context, params *ImplementationParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
700	var result Definition /*Definition | DefinitionLink[] | null*/
701	if err := s.Conn.Call(ctx, "textDocument/implementation", params, &result); err != nil {
702		return nil, err
703	}
704	return result, nil
705}
706
707func (s *serverDispatcher) TypeDefinition(ctx context.Context, params *TypeDefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
708	var result Definition /*Definition | DefinitionLink[] | null*/
709	if err := s.Conn.Call(ctx, "textDocument/typeDefinition", params, &result); err != nil {
710		return nil, err
711	}
712	return result, nil
713}
714
715func (s *serverDispatcher) DocumentColor(ctx context.Context, params *DocumentColorParams) ([]ColorInformation, error) {
716	var result []ColorInformation
717	if err := s.Conn.Call(ctx, "textDocument/documentColor", params, &result); err != nil {
718		return nil, err
719	}
720	return result, nil
721}
722
723func (s *serverDispatcher) ColorPresentation(ctx context.Context, params *ColorPresentationParams) ([]ColorPresentation, error) {
724	var result []ColorPresentation
725	if err := s.Conn.Call(ctx, "textDocument/colorPresentation", params, &result); err != nil {
726		return nil, err
727	}
728	return result, nil
729}
730
731func (s *serverDispatcher) FoldingRange(ctx context.Context, params *FoldingRangeParams) ([]FoldingRange /*FoldingRange[] | null*/, error) {
732	var result []FoldingRange /*FoldingRange[] | null*/
733	if err := s.Conn.Call(ctx, "textDocument/foldingRange", params, &result); err != nil {
734		return nil, err
735	}
736	return result, nil
737}
738
739func (s *serverDispatcher) Declaration(ctx context.Context, params *DeclarationParams) (Declaration /*Declaration | DeclarationLink[] | null*/, error) {
740	var result Declaration /*Declaration | DeclarationLink[] | null*/
741	if err := s.Conn.Call(ctx, "textDocument/declaration", params, &result); err != nil {
742		return nil, err
743	}
744	return result, nil
745}
746
747func (s *serverDispatcher) SelectionRange(ctx context.Context, params *SelectionRangeParams) ([]SelectionRange /*SelectionRange[] | null*/, error) {
748	var result []SelectionRange /*SelectionRange[] | null*/
749	if err := s.Conn.Call(ctx, "textDocument/selectionRange", params, &result); err != nil {
750		return nil, err
751	}
752	return result, nil
753}
754
755func (s *serverDispatcher) WorkDoneProgressCreate(ctx context.Context, params *WorkDoneProgressCreateParams) error {
756	return s.Conn.Call(ctx, "window/workDoneProgress/create", params, nil) // Call, not Notify
757}
758
759func (s *serverDispatcher) Initialize(ctx context.Context, params *ParamInitialize) (*InitializeResult, error) {
760	var result InitializeResult
761	if err := s.Conn.Call(ctx, "initialize", params, &result); err != nil {
762		return nil, err
763	}
764	return &result, nil
765}
766
767func (s *serverDispatcher) Shutdown(ctx context.Context) error {
768	return s.Conn.Call(ctx, "shutdown", nil, nil)
769}
770
771func (s *serverDispatcher) WillSaveWaitUntil(ctx context.Context, params *WillSaveTextDocumentParams) ([]TextEdit /*TextEdit[] | null*/, error) {
772	var result []TextEdit /*TextEdit[] | null*/
773	if err := s.Conn.Call(ctx, "textDocument/willSaveWaitUntil", params, &result); err != nil {
774		return nil, err
775	}
776	return result, nil
777}
778
779func (s *serverDispatcher) Completion(ctx context.Context, params *CompletionParams) (*CompletionList /*CompletionItem[] | CompletionList | null*/, error) {
780	var result CompletionList /*CompletionItem[] | CompletionList | null*/
781	if err := s.Conn.Call(ctx, "textDocument/completion", params, &result); err != nil {
782		return nil, err
783	}
784	return &result, nil
785}
786
787func (s *serverDispatcher) Resolve(ctx context.Context, params *CompletionItem) (*CompletionItem, error) {
788	var result CompletionItem
789	if err := s.Conn.Call(ctx, "completionItem/resolve", params, &result); err != nil {
790		return nil, err
791	}
792	return &result, nil
793}
794
795func (s *serverDispatcher) Hover(ctx context.Context, params *HoverParams) (*Hover /*Hover | null*/, error) {
796	var result Hover /*Hover | null*/
797	if err := s.Conn.Call(ctx, "textDocument/hover", params, &result); err != nil {
798		return nil, err
799	}
800	return &result, nil
801}
802
803func (s *serverDispatcher) SignatureHelp(ctx context.Context, params *SignatureHelpParams) (*SignatureHelp /*SignatureHelp | null*/, error) {
804	var result SignatureHelp /*SignatureHelp | null*/
805	if err := s.Conn.Call(ctx, "textDocument/signatureHelp", params, &result); err != nil {
806		return nil, err
807	}
808	return &result, nil
809}
810
811func (s *serverDispatcher) Definition(ctx context.Context, params *DefinitionParams) (Definition /*Definition | DefinitionLink[] | null*/, error) {
812	var result Definition /*Definition | DefinitionLink[] | null*/
813	if err := s.Conn.Call(ctx, "textDocument/definition", params, &result); err != nil {
814		return nil, err
815	}
816	return result, nil
817}
818
819func (s *serverDispatcher) References(ctx context.Context, params *ReferenceParams) ([]Location /*Location[] | null*/, error) {
820	var result []Location /*Location[] | null*/
821	if err := s.Conn.Call(ctx, "textDocument/references", params, &result); err != nil {
822		return nil, err
823	}
824	return result, nil
825}
826
827func (s *serverDispatcher) DocumentHighlight(ctx context.Context, params *DocumentHighlightParams) ([]DocumentHighlight /*DocumentHighlight[] | null*/, error) {
828	var result []DocumentHighlight /*DocumentHighlight[] | null*/
829	if err := s.Conn.Call(ctx, "textDocument/documentHighlight", params, &result); err != nil {
830		return nil, err
831	}
832	return result, nil
833}
834
835func (s *serverDispatcher) DocumentSymbol(ctx context.Context, params *DocumentSymbolParams) ([]DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/, error) {
836	var result []DocumentSymbol /*SymbolInformation[] | DocumentSymbol[] | null*/
837	if err := s.Conn.Call(ctx, "textDocument/documentSymbol", params, &result); err != nil {
838		return nil, err
839	}
840	return result, nil
841}
842
843func (s *serverDispatcher) CodeAction(ctx context.Context, params *CodeActionParams) ([]CodeAction /*(Command | CodeAction)[] | null*/, error) {
844	var result []CodeAction /*(Command | CodeAction)[] | null*/
845	if err := s.Conn.Call(ctx, "textDocument/codeAction", params, &result); err != nil {
846		return nil, err
847	}
848	return result, nil
849}
850
851func (s *serverDispatcher) Symbol(ctx context.Context, params *WorkspaceSymbolParams) ([]SymbolInformation /*SymbolInformation[] | null*/, error) {
852	var result []SymbolInformation /*SymbolInformation[] | null*/
853	if err := s.Conn.Call(ctx, "workspace/symbol", params, &result); err != nil {
854		return nil, err
855	}
856	return result, nil
857}
858
859func (s *serverDispatcher) CodeLens(ctx context.Context, params *CodeLensParams) ([]CodeLens /*CodeLens[] | null*/, error) {
860	var result []CodeLens /*CodeLens[] | null*/
861	if err := s.Conn.Call(ctx, "textDocument/codeLens", params, &result); err != nil {
862		return nil, err
863	}
864	return result, nil
865}
866
867func (s *serverDispatcher) ResolveCodeLens(ctx context.Context, params *CodeLens) (*CodeLens, error) {
868	var result CodeLens
869	if err := s.Conn.Call(ctx, "codeLens/resolve", params, &result); err != nil {
870		return nil, err
871	}
872	return &result, nil
873}
874
875func (s *serverDispatcher) DocumentLink(ctx context.Context, params *DocumentLinkParams) ([]DocumentLink /*DocumentLink[] | null*/, error) {
876	var result []DocumentLink /*DocumentLink[] | null*/
877	if err := s.Conn.Call(ctx, "textDocument/documentLink", params, &result); err != nil {
878		return nil, err
879	}
880	return result, nil
881}
882
883func (s *serverDispatcher) ResolveDocumentLink(ctx context.Context, params *DocumentLink) (*DocumentLink, error) {
884	var result DocumentLink
885	if err := s.Conn.Call(ctx, "documentLink/resolve", params, &result); err != nil {
886		return nil, err
887	}
888	return &result, nil
889}
890
891func (s *serverDispatcher) Formatting(ctx context.Context, params *DocumentFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
892	var result []TextEdit /*TextEdit[] | null*/
893	if err := s.Conn.Call(ctx, "textDocument/formatting", params, &result); err != nil {
894		return nil, err
895	}
896	return result, nil
897}
898
899func (s *serverDispatcher) RangeFormatting(ctx context.Context, params *DocumentRangeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
900	var result []TextEdit /*TextEdit[] | null*/
901	if err := s.Conn.Call(ctx, "textDocument/rangeFormatting", params, &result); err != nil {
902		return nil, err
903	}
904	return result, nil
905}
906
907func (s *serverDispatcher) OnTypeFormatting(ctx context.Context, params *DocumentOnTypeFormattingParams) ([]TextEdit /*TextEdit[] | null*/, error) {
908	var result []TextEdit /*TextEdit[] | null*/
909	if err := s.Conn.Call(ctx, "textDocument/onTypeFormatting", params, &result); err != nil {
910		return nil, err
911	}
912	return result, nil
913}
914
915func (s *serverDispatcher) Rename(ctx context.Context, params *RenameParams) (*WorkspaceEdit /*WorkspaceEdit | null*/, error) {
916	var result WorkspaceEdit /*WorkspaceEdit | null*/
917	if err := s.Conn.Call(ctx, "textDocument/rename", params, &result); err != nil {
918		return nil, err
919	}
920	return &result, nil
921}
922
923func (s *serverDispatcher) PrepareRename(ctx context.Context, params *PrepareRenameParams) (*Range /*Range | { range: Range, placeholder: string } | null*/, error) {
924	var result Range /*Range | { range: Range, placeholder: string } | null*/
925	if err := s.Conn.Call(ctx, "textDocument/prepareRename", params, &result); err != nil {
926		return nil, err
927	}
928	return &result, nil
929}
930
931func (s *serverDispatcher) ExecuteCommand(ctx context.Context, params *ExecuteCommandParams) (interface{} /*any | null*/, error) {
932	var result interface{} /*any | null*/
933	if err := s.Conn.Call(ctx, "workspace/executeCommand", params, &result); err != nil {
934		return nil, err
935	}
936	return result, nil
937}
938
939func (s *serverDispatcher) PrepareCallHierarchy(ctx context.Context, params *CallHierarchyPrepareParams) ([]CallHierarchyItem /*CallHierarchyItem[] | null*/, error) {
940	var result []CallHierarchyItem /*CallHierarchyItem[] | null*/
941	if err := s.Conn.Call(ctx, "textDocument/prepareCallHierarchy", params, &result); err != nil {
942		return nil, err
943	}
944	return result, nil
945}
946
947func (s *serverDispatcher) IncomingCalls(ctx context.Context, params *CallHierarchyIncomingCallsParams) ([]CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/, error) {
948	var result []CallHierarchyIncomingCall /*CallHierarchyIncomingCall[] | null*/
949	if err := s.Conn.Call(ctx, "callHierarchy/incomingCalls", params, &result); err != nil {
950		return nil, err
951	}
952	return result, nil
953}
954
955func (s *serverDispatcher) OutgoingCalls(ctx context.Context, params *CallHierarchyOutgoingCallsParams) ([]CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/, error) {
956	var result []CallHierarchyOutgoingCall /*CallHierarchyOutgoingCall[] | null*/
957	if err := s.Conn.Call(ctx, "callHierarchy/outgoingCalls", params, &result); err != nil {
958		return nil, err
959	}
960	return result, nil
961}
962
963func (s *serverDispatcher) SemanticTokens(ctx context.Context, params *SemanticTokensParams) (*SemanticTokens /*SemanticTokens | null*/, error) {
964	var result SemanticTokens /*SemanticTokens | null*/
965	if err := s.Conn.Call(ctx, "textDocument/semanticTokens", params, &result); err != nil {
966		return nil, err
967	}
968	return &result, nil
969}
970
971func (s *serverDispatcher) SemanticTokensEdits(ctx context.Context, params *SemanticTokensEditsParams) (interface{} /* SemanticTokens | SemanticTokensEdits | nil*/, error) {
972	var result interface{} /* SemanticTokens | SemanticTokensEdits | nil*/
973	if err := s.Conn.Call(ctx, "textDocument/semanticTokens/edits", params, &result); err != nil {
974		return nil, err
975	}
976	return result, nil
977}
978
979func (s *serverDispatcher) SemanticTokensRange(ctx context.Context, params *SemanticTokensRangeParams) (*SemanticTokens /*SemanticTokens | null*/, error) {
980	var result SemanticTokens /*SemanticTokens | null*/
981	if err := s.Conn.Call(ctx, "textDocument/semanticTokens/range", params, &result); err != nil {
982		return nil, err
983	}
984	return &result, nil
985}
986
987func (s *serverDispatcher) NonstandardRequest(ctx context.Context, method string, params interface{}) (interface{}, error) {
988	var result interface{}
989	if err := s.Conn.Call(ctx, method, params, &result); err != nil {
990		return nil, err
991	}
992	return result, nil
993}
994