From 6d4367873f767ef6c3d0989191976684f527cd56 Mon Sep 17 00:00:00 2001 From: micnncim Date: Tue, 24 Sep 2019 17:50:36 +0900 Subject: [PATCH] general: fix CompletionItemKind to nest valueSet Fix typo in general_gojay.go Fix CompletionItemKind to nest valueSet in gojay Fix CompletionItemKind to nest valueSet in gojay test Revert fixing typo in general_gojay.go Revert "Revert fixing typo in general_gojay.go" This reverts commit dcb155e06fa0d494feae6ce690a153b2878ca74f. Revert "Fix typo in general_gojay.go" This reverts commit c0dffb3b173fc25b7e427a76927ae13d362044e7. Implement gojay interface in TextDocumentClientCapabilitiesCompletionItemKind Fix TextDocumentClientCapabilitiesCompletionItemKind implemetation for gojay Fix test for gojay Add comment to exported type Fix general_test.go Fix test in completionItemKind --- general.go | 17 ++++++++++- general_gojay.go | 67 +++++++++++++++++++++++++++++++++++++++++-- general_gojay_test.go | 30 ++++++++++++------- general_test.go | 24 ++++++++++------ 4 files changed, 115 insertions(+), 23 deletions(-) diff --git a/general.go b/general.go index cc1653bc..17bc0aa2 100644 --- a/general.go +++ b/general.go @@ -179,13 +179,28 @@ type TextDocumentClientCapabilitiesCompletion struct { // capabilities. CompletionItem *TextDocumentClientCapabilitiesCompletionItem `json:"completionItem,omitempty"` - CompletionItemKind CompletionItemKind `json:"completionItemKind,omitempty"` + CompletionItemKind *TextDocumentClientCapabilitiesCompletionItemKind `json:"completionItemKind,omitempty"` // ContextSupport is the client supports to send additional context information for a // `textDocument/completion` request. ContextSupport bool `json:"contextSupport,omitempty"` } +// TextDocumentClientCapabilitiesCompletionItemKind specific capabilities for the `CompletionItemKind ` in the `textDocument/completion` request. +type TextDocumentClientCapabilitiesCompletionItemKind struct { + // + // The completion item kind values the client supports. When this + // property exists the client also guarantees that it will + // handle values outside its set gracefully and falls back + // to a default value when unknown. + // + // If this property is not present the client only supports + // the completion items kinds from `Text` to `Reference` as defined in + // the initial version of the protocol. + // + ValueSet []CompletionItemKind `json:"valueSet,omitempty"` +} + // TextDocumentClientCapabilitiesCompletionItem is the client supports the following `CompletionItem` specific // capabilities. type TextDocumentClientCapabilitiesCompletionItem struct { diff --git a/general_gojay.go b/general_gojay.go index c15c063a..9bfaa23f 100644 --- a/general_gojay.go +++ b/general_gojay.go @@ -455,7 +455,7 @@ var ( func (v *TextDocumentClientCapabilitiesCompletion) MarshalJSONObject(enc *gojay.Encoder) { enc.BoolKeyOmitEmpty(keyDynamicRegistration, v.DynamicRegistration) enc.ObjectKeyOmitEmpty(keyCompletionItem, v.CompletionItem) - enc.IntKeyOmitEmpty(keyCompletionItemKind, int(v.CompletionItemKind)) + enc.ObjectKeyOmitEmpty(keyCompletionItemKind, v.CompletionItemKind) enc.BoolKeyOmitEmpty(keyContextSupport, v.ContextSupport) } @@ -473,7 +473,10 @@ func (v *TextDocumentClientCapabilitiesCompletion) UnmarshalJSONObject(dec *goja } return dec.Object(v.CompletionItem) case keyCompletionItemKind: - return dec.Int((*int)(&v.CompletionItemKind)) + if v.CompletionItemKind == nil { + v.CompletionItemKind = &TextDocumentClientCapabilitiesCompletionItemKind{} + } + return dec.Object(v.CompletionItemKind) case keyContextSupport: return dec.Bool(&v.ContextSupport) } @@ -498,6 +501,66 @@ var ( _ Pooler = (*TextDocumentClientCapabilitiesCompletion)(nil) ) +// CompletionItemKinds represents a slice of CompletionItemKind. +type CompletionItemKinds []CompletionItemKind + +// MarshalJSONArray implements gojay's MarshalerJSONArray. +func (v CompletionItemKinds) MarshalJSONArray(enc *gojay.Encoder) { + for i := range v { + enc.Int(int(v[i])) + } +} + +// IsNil implements gojay's MarshalerJSONArray. +func (v CompletionItemKinds) IsNil() bool { return len(v) == 0 } + +// UnmarshalJSONArray implements gojay's UnmarshalerJSONArray. +func (v *CompletionItemKinds) UnmarshalJSONArray(dec *gojay.Decoder) error { + var value CompletionItemKind + if err := dec.Int((*int)(&value)); err != nil { + return err + } + *v = append(*v, value) + return nil +} + +// compile time check whether the CompletionItemKinds implements a gojay.MarshalerJSONArray, gojay.UnmarshalerJSONArray and Pooler interface. +var ( + _ gojay.MarshalerJSONArray = (*CompletionItemKinds)(nil) + _ gojay.UnmarshalerJSONArray = (*CompletionItemKinds)(nil) +) + +// MarshalJSONObject implements gojay's MarshalerJSONObject. +func (v *TextDocumentClientCapabilitiesCompletionItemKind) MarshalJSONObject(enc *gojay.Encoder) { + enc.ArrayKey(keyValueSet, (*CompletionItemKinds)(&v.ValueSet)) +} + +// IsNil returns wether the structure is nil value or not. +func (v *TextDocumentClientCapabilitiesCompletionItemKind) IsNil() bool { return v == nil } + +// UnmarshalJSONObject implements gojay's UnmarshalerJSONObject. +func (v *TextDocumentClientCapabilitiesCompletionItemKind) UnmarshalJSONObject(dec *gojay.Decoder, k string) error { + if k == keyValueSet { + return dec.Array((*CompletionItemKinds)(&v.ValueSet)) + } + return nil +} + +// NKeys returns the number of keys to unmarshal. +func (v *TextDocumentClientCapabilitiesCompletionItemKind) NKeys() int { return 1 } + +// Reset reset fields +func (v *TextDocumentClientCapabilitiesCompletionItemKind) Reset() { + v.ValueSet = nil +} + +// compile time check whether the TextDocumentClientCapabilitiesCompletion implements a gojay.MarshalerJSONObject and gojay.UnmarshalerJSONObject and Pooler interface. +var ( + _ gojay.MarshalerJSONObject = (*TextDocumentClientCapabilitiesCompletionItemKind)(nil) + _ gojay.UnmarshalerJSONObject = (*TextDocumentClientCapabilitiesCompletionItemKind)(nil) + _ Pooler = (*TextDocumentClientCapabilitiesCompletionItemKind)(nil) +) + // MarkupKinds represents a slice of MarkupKind. type MarkupKinds []MarkupKind diff --git a/general_gojay_test.go b/general_gojay_test.go index 5f90f0e2..004d942e 100644 --- a/general_gojay_test.go +++ b/general_gojay_test.go @@ -427,7 +427,7 @@ func TestTextDocumentClientCapabilitiesSynchronization(t *testing.T) { } func TestTextDocumentClientCapabilitiesCompletion(t *testing.T) { - const want = `{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true}` + const want = `{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true}` t.Run("Marshal", func(t *testing.T) { t.Parallel() @@ -453,8 +453,10 @@ func TestTextDocumentClientCapabilitiesCompletion(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, want: want, wantMarshalErr: false, @@ -512,8 +514,10 @@ func TestTextDocumentClientCapabilitiesCompletion(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, wantUnmarshalErr: false, wantErr: false, @@ -2491,7 +2495,7 @@ func TestTextDocumentClientCapabilitiesFoldingRange(t *testing.T) { } func TestTextDocumentClientCapabilities(t *testing.T) { - const want = `{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}` + const want = `{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}` wantType := TextDocumentClientCapabilities{ Synchronization: &TextDocumentClientCapabilitiesSynchronization{ DidSave: true, @@ -2511,8 +2515,10 @@ func TestTextDocumentClientCapabilities(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, Hover: &TextDocumentClientCapabilitiesHover{ DynamicRegistration: true, @@ -2708,7 +2714,7 @@ func TestTextDocumentClientCapabilities(t *testing.T) { } func TestClientCapabilities(t *testing.T) { - const want = `{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"failureHandling":"FailureHandling","resourceOperations":["ResourceOperations"]},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}}` + const want = `{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"failureHandling":"FailureHandling","resourceOperations":["ResourceOperations"]},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}}` wantType := ClientCapabilities{ Workspace: &WorkspaceClientCapabilities{ ApplyEdit: true, @@ -2761,8 +2767,10 @@ func TestClientCapabilities(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, Hover: &TextDocumentClientCapabilitiesHover{ DynamicRegistration: true, diff --git a/general_test.go b/general_test.go index 17a60020..d69d6749 100644 --- a/general_test.go +++ b/general_test.go @@ -426,7 +426,7 @@ func TestTextDocumentClientCapabilitiesSynchronization(t *testing.T) { } func TestTextDocumentClientCapabilitiesCompletion(t *testing.T) { - const want = `{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true}` + const want = `{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true}` wantType := TextDocumentClientCapabilitiesCompletion{ DynamicRegistration: true, CompletionItem: &TextDocumentClientCapabilitiesCompletionItem{ @@ -439,8 +439,10 @@ func TestTextDocumentClientCapabilitiesCompletion(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, } t.Run("Marshal", func(t *testing.T) { @@ -2554,7 +2556,7 @@ func TestTextDocumentClientCapabilitiesSelectionRange(t *testing.T) { } func TestTextDocumentClientCapabilities(t *testing.T) { - const want = `{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}` + const want = `{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}` wantType := TextDocumentClientCapabilities{ Synchronization: &TextDocumentClientCapabilitiesSynchronization{ DidSave: true, @@ -2574,8 +2576,10 @@ func TestTextDocumentClientCapabilities(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, Hover: &TextDocumentClientCapabilitiesHover{ DynamicRegistration: true, @@ -2770,7 +2774,7 @@ func TestTextDocumentClientCapabilities(t *testing.T) { } func TestClientCapabilities(t *testing.T) { - const want = `{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"failureHandling":"FailureHandling","resourceOperations":["ResourceOperations"]},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":1,"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}}` + const want = `{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"failureHandling":"FailureHandling","resourceOperations":["ResourceOperations"]},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]}},"executeCommand":{"dynamicRegistration":true},"workspaceFolders":true,"configuration":true},"textDocument":{"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"completion":{"dynamicRegistration":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["plaintext","markdown"],"deprecatedSupport":true,"preselectSupport":true},"completionItemKind":{"valueSet":[1]},"contextSupport":true},"hover":{"dynamicRegistration":true,"contentFormat":["plaintext","markdown"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["plaintext","markdown"]}},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6]},"hierarchicalDocumentSymbolSupport":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"codeAction":{"dynamicRegistration":true,"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["quickfix","refactor","refactor.extract","refactor.rewrite","source","source.organizeImports"]}}},"codeLens":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true},"publishDiagnostics":{"relatedInformation":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":0.5,"lineFoldingOnly":true},"selectionRange":{"dynamicRegistration":true}}}` wantType := ClientCapabilities{ Workspace: &WorkspaceClientCapabilities{ ApplyEdit: true, @@ -2823,8 +2827,10 @@ func TestClientCapabilities(t *testing.T) { DeprecatedSupport: true, PreselectSupport: true, }, - CompletionItemKind: TextCompletion, - ContextSupport: true, + CompletionItemKind: &TextDocumentClientCapabilitiesCompletionItemKind{ + ValueSet: []CompletionItemKind{TextCompletion}, + }, + ContextSupport: true, }, Hover: &TextDocumentClientCapabilitiesHover{ DynamicRegistration: true,