Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools / gopls@v0.5.2 / integration / parse / protocol.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools/gopls@v0.5.2/integration/parse/protocol.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools/gopls@v0.5.2/integration/parse/protocol.go
new file mode 100644 (file)
index 0000000..d1e90ed
--- /dev/null
@@ -0,0 +1,320 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package parse
+
+import (
+       "log"
+
+       p "golang.org/x/tools/internal/lsp/protocol"
+)
+
+// Requests and notifications are fixed types
+// Responses may be one of several types
+
+// Requests returns a pointer to a type suitable for Unmarshal
+func Requests(m string) interface{} {
+       // these are in the documentation's order
+       switch m {
+       case "initialize":
+               return new(p.InitializeParams)
+       case "shutdown":
+               return new(struct{})
+       case "window/showMessgeRequest":
+               return new(p.ShowMessageRequestParams)
+       case "client/registerCapability":
+               return new(p.RegistrationParams)
+       case "client/unregisterCapability":
+               return new(p.UnregistrationParams)
+       case "workspace/workspaceFolders":
+               return nil
+       case "workspace/configuration":
+               return new(p.ConfigurationParams)
+       case "workspace/symbol":
+               return new(p.WorkspaceSymbolParams)
+       case "workspace/executeCommand":
+               return new(p.ExecuteCommandParams)
+       case "workspace/applyEdit":
+               return new(p.ApplyWorkspaceEditParams)
+       case "textDocument/willSaveWaitUntil":
+               return new(p.WillSaveTextDocumentParams)
+       case "textDocument/completion":
+               return new(p.CompletionParams)
+       case "completionItem/resolve":
+               return new(p.CompletionItem)
+       case "textDocument/hover":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/signatureHelp":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/declaration":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/definition":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/typeDefinition":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/implementation":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/references":
+               return new(p.ReferenceParams)
+       case "textDocument/documentHighlight":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/documentSymbol":
+               return new(p.DocumentSymbolParams)
+       case "textDocument/codeAction":
+               return new(p.CodeActionParams)
+       case "textDocument/codeLens":
+               return new(p.CodeLensParams)
+       case "codeLens/resolve":
+               return new(p.CodeLens)
+       case "textDocument/documentLink":
+               return new(p.DocumentLinkParams)
+       case "documentLink/resolve":
+               return new(p.DocumentLink)
+       case "textDocument/documentColor":
+               return new(p.DocumentColorParams)
+       case "textDocument/colorPressentation":
+               return new(p.ColorPresentationParams)
+       case "textDocument/formatting":
+               return new(p.DocumentFormattingParams)
+       case "textDocument/rangeFormatting":
+               return new(p.DocumentRangeFormattingParams)
+       case "textDocument/typeFormatting":
+               return new(p.DocumentOnTypeFormattingParams)
+       case "textDocument/rename":
+               return new(p.RenameParams)
+       case "textDocument/prepareRename":
+               return new(p.TextDocumentPositionParams)
+       case "textDocument/foldingRange":
+               return new(p.FoldingRangeParams)
+       case "textDocument/incomingCalls":
+               return new(p.CallHierarchyIncomingCallsParams)
+       case "textDocument/outgoingCalls":
+               return new(p.CallHierarchyOutgoingCallsParams)
+       }
+       log.Fatalf("request(%s) undefined", m)
+       return ""
+}
+
+// Notifs returns a pointer to a type suitable for Unmarshal
+func Notifs(m string) interface{} {
+       switch m {
+       case "$/cancelRequest":
+               return new(p.CancelParams)
+       case "$/setTraceNotification":
+               return new(struct{ Value string })
+       case "client/registerCapability": // why is this a notification? (serer->client rpc)
+               return new(p.RegistrationParams)
+       case "initialized":
+               return new(p.InitializedParams)
+       case "exit":
+               return nil
+       case "window/showMessage":
+               return new(p.ShowMessageParams)
+       case "window/logMessage":
+               return new(p.LogMessageParams)
+       case "telemetry/event":
+               return new(interface{}) // any
+       case "workspace/didChangeWorkspaceFolders":
+               return new(p.DidChangeWorkspaceFoldersParams)
+       case "workspace/didChangeConfiguration":
+               return new(p.DidChangeConfigurationParams)
+       case "workspace/didChangeWatchedFiles":
+               return new(p.DidChangeWatchedFilesParams)
+       case "textDocument/didOpen":
+               return new(p.DidOpenTextDocumentParams)
+       case "textDocument/didChange":
+               return new(p.DidChangeTextDocumentParams)
+       case "textDocument/willSave":
+               return new(p.WillSaveTextDocumentParams)
+       case "textDocument/didSave":
+               return new(p.DidSaveTextDocumentParams)
+       case "textDocument/didClose":
+               return new(p.DidCloseTextDocumentParams)
+       case "textDocument/willClose":
+               return new(p.DidCloseTextDocumentParams)
+       case "textDocument/publishDiagnostics":
+               return new(p.PublishDiagnosticsParams)
+       }
+       log.Fatalf("notif(%s) undefined", m)
+       return ""
+}
+
+// Responses returns a slice of types, one of which should be
+// suitable for Unmarshal
+func Responses(m string) []interface{} {
+       switch m {
+       case "initialize":
+               return []interface{}{new(p.InitializeResult)}
+       case "shutdown":
+               return []interface{}{nil}
+       case "window/showMessageRequest":
+               return []interface{}{new(p.MessageActionItem), nil}
+       case "client/registerCapability":
+               return []interface{}{nil}
+       case "client/unregisterCapability":
+               return []interface{}{nil}
+       case "workspace/workspaceFolder":
+               return []interface{}{new([]p.WorkspaceFolder), nil}
+       case "workspace/configuration":
+               return []interface{}{new([]interface{}), new(interface{})}
+       case "workspace/symbol":
+               return []interface{}{new([]p.SymbolInformation), nil}
+       case "workspace/executeCommand":
+               return []interface{}{new(interface{}), nil}
+       case "workspace/applyEdit":
+               return []interface{}{new(p.ApplyWorkspaceEditResponse)}
+       case "textDocument/willSaveWaitUntil":
+               return []interface{}{new([]p.TextEdit), nil}
+       case "textDocument/completion":
+               return []interface{}{new(p.CompletionList), new([]p.CompletionItem), nil}
+       case "completionItem/resolve":
+               return []interface{}{new(p.CompletionItem)}
+       case "textDocument/hover":
+               return []interface{}{new(p.Hover), nil}
+       case "textDocument/signatureHelp":
+               return []interface{}{new(p.SignatureHelp), nil}
+       case "textDocument/declaration":
+               return []interface{}{new(p.Location), new([]p.Location), new([]p.LocationLink), nil}
+       case "textDocument/definition":
+               return []interface{}{new([]p.Location), new([]p.Location), new([]p.LocationLink), nil}
+       case "textDocument/typeDefinition":
+               return []interface{}{new([]p.Location), new([]p.LocationLink), new(p.Location), nil}
+       case "textDocument/implementation":
+               return []interface{}{new(p.Location), new([]p.Location), new([]p.LocationLink), nil}
+       case "textDocument/references":
+               return []interface{}{new([]p.Location), nil}
+       case "textDocument/documentHighlight":
+               return []interface{}{new([]p.DocumentHighlight), nil}
+       case "textDocument/documentSymbol":
+               return []interface{}{new([]p.DocumentSymbol), new([]p.SymbolInformation), nil}
+       case "textDocument/codeAction":
+               return []interface{}{new([]p.CodeAction), new(p.Command), nil}
+       case "textDocument/codeLens":
+               return []interface{}{new([]p.CodeLens), nil}
+       case "codelens/resolve":
+               return []interface{}{new(p.CodeLens)}
+       case "textDocument/documentLink":
+               return []interface{}{new([]p.DocumentLink), nil}
+       case "documentLink/resolve":
+               return []interface{}{new(p.DocumentLink)}
+       case "textDocument/documentColor":
+               return []interface{}{new([]p.ColorInformation)}
+       case "textDocument/colorPresentation":
+               return []interface{}{new([]p.ColorPresentation)}
+       case "textDocument/formatting":
+               return []interface{}{new([]p.TextEdit), nil}
+       case "textDocument/rangeFormatting":
+               return []interface{}{new([]p.TextEdit), nil}
+       case "textDocument/onTypeFormatting":
+               return []interface{}{new([]p.TextEdit), nil}
+       case "textDocument/rename":
+               return []interface{}{new(p.WorkspaceEdit), nil}
+       case "textDocument/prepareRename":
+               return []interface{}{new(p.Range), nil}
+       case "textDocument/foldingRange":
+               return []interface{}{new([]p.FoldingRange), nil}
+       case "callHierarchy/incomingCalls":
+               return []interface{}{new([]p.CallHierarchyIncomingCall), nil}
+       case "callHierarchy/outgoingCalls":
+               return []interface{}{new([]p.CallHierarchyOutgoingCall), nil}
+       }
+       log.Fatalf("responses(%q) undefined", m)
+       return nil
+}
+
+// Msgtype given method names. Note that mSrv|mCl is possible
+type Msgtype int
+
+const (
+       // Mnot for notifications
+       Mnot Msgtype = 1
+       // Mreq for requests
+       Mreq Msgtype = 2
+       // Msrv for messages from the server
+       Msrv Msgtype = 4
+       // Mcl for messages from the client
+       Mcl Msgtype = 8
+)
+
+// IsNotify says if the message is a notification
+func IsNotify(msg string) bool {
+       m, ok := fromMethod[msg]
+       if !ok {
+               log.Fatalf("%q", msg)
+       }
+       return m&Mnot != 0
+}
+
+// FromServer says if the message is from the server
+func FromServer(msg string) bool {
+       m, ok := fromMethod[msg]
+       if !ok {
+               log.Fatalf("%q", msg)
+       }
+       return m&Msrv != 0
+}
+
+// FromClient says if the message is from the client
+func FromClient(msg string) bool {
+       m, ok := fromMethod[msg]
+       if !ok {
+               log.Fatalf("%q", msg)
+       }
+       return m&Mcl != 0
+}
+
+// rpc name to message type
+var fromMethod = map[string]Msgtype{
+       "$/cancelRequest":             Mnot | Msrv | Mcl,
+       "initialize":                  Mreq | Msrv,
+       "initialized":                 Mnot | Mcl,
+       "shutdown":                    Mreq | Mcl,
+       "exit":                        Mnot | Mcl,
+       "window/showMessage":          Mreq | Msrv,
+       "window/logMessage":           Mnot | Msrv,
+       "telemetry'event":             Mnot | Msrv,
+       "client/registerCapability":   Mreq | Msrv,
+       "client/unregisterCapability": Mreq | Msrv,
+       "workspace/workspaceFolders":  Mreq | Msrv,
+       "workspace/workspaceDidChangeWorkspaceFolders": Mnot | Mcl,
+       "workspace/didChangeConfiguration":             Mnot | Mcl,
+       "workspace/configuration":                      Mreq | Msrv,
+       "workspace/didChangeWatchedFiles":              Mnot | Mcl,
+       "workspace/symbol":                             Mreq | Mcl,
+       "workspace/executeCommand":                     Mreq | Mcl,
+       "workspace/applyEdit":                          Mreq | Msrv,
+       "textDocument/didOpen":                         Mnot | Mcl,
+       "textDocument/didChange":                       Mnot | Mcl,
+       "textDocument/willSave":                        Mnot | Mcl,
+       "textDocument/willSaveWaitUntil":               Mreq | Mcl,
+       "textDocument/didSave":                         Mnot | Mcl,
+       "textDocument/didClose":                        Mnot | Mcl,
+       "textDocument/publishDiagnostics":              Mnot | Msrv,
+       "textDocument/completion":                      Mreq | Mcl,
+       "completionItem/resolve":                       Mreq | Mcl,
+       "textDocument/hover":                           Mreq | Mcl,
+       "textDocument/signatureHelp":                   Mreq | Mcl,
+       "textDocument/declaration":                     Mreq | Mcl,
+       "textDocument/definition":                      Mreq | Mcl,
+       "textDocument/typeDefinition":                  Mreq | Mcl,
+       "textDocument/implementation":                  Mreq | Mcl,
+       "textDocument/references":                      Mreq | Mcl,
+       "textDocument/documentHighlight":               Mreq | Mcl,
+       "textDocument/documentSymbol":                  Mreq | Mcl,
+       "textDocument/codeAction":                      Mreq | Mcl,
+       "textDocument/codeLens":                        Mreq | Mcl,
+       "codeLens/resolve":                             Mreq | Mcl,
+       "textDocument/documentLink":                    Mreq | Mcl,
+       "documentLink/resolve":                         Mreq | Mcl,
+       "textDocument/documentColor":                   Mreq | Mcl,
+       "textDocument/colorPresentation":               Mreq | Mcl,
+       "textDocument/formatting":                      Mreq | Mcl,
+       "textDocument/rangeFormatting":                 Mreq | Mcl,
+       "textDocument/onTypeFormatting":                Mreq | Mcl,
+       "textDocument/rename":                          Mreq | Mcl,
+       "textDocument/prepareRename":                   Mreq | Mcl,
+       "textDocument/foldingRange":                    Mreq | Mcl,
+       "callHierarchy/incomingCalls":                  Mreq | Mcl,
+       "callHierarchy/outgoingCalls":                  Mreq | Mcl,
+}