File tree 2 files changed +23
-0
lines changed
2 files changed +23
-0
lines changed Original file line number Diff line number Diff line change @@ -264,6 +264,9 @@ func (entry *DocumentSymbolArrayOrSymbolInformationArray) UnmarshalJSON(raw []by
264
264
if err := json .Unmarshal (raw , & intermediate ); err != nil {
265
265
return err
266
266
}
267
+ if len (intermediate ) == 0 {
268
+ return nil
269
+ }
267
270
discriminator := struct {
268
271
Range * Range `json:"range,omitempty"`
269
272
Location * Location `json:"location,omitempty"`
@@ -292,6 +295,16 @@ func (entry *DocumentSymbolArrayOrSymbolInformationArray) UnmarshalJSON(raw []by
292
295
return nil
293
296
}
294
297
298
+ func (entry DocumentSymbolArrayOrSymbolInformationArray ) MarshalJSON () ([]byte , error ) {
299
+ if entry .DocumentSymbolArray != nil {
300
+ return json .Marshal (entry .DocumentSymbolArray )
301
+ }
302
+ if entry .SymbolInformationArray != nil {
303
+ return json .Marshal (entry .SymbolInformationArray )
304
+ }
305
+ return []byte ("[]" ), nil
306
+ }
307
+
295
308
// ApplyWorkspaceEditParams structure according to LSP
296
309
type ApplyWorkspaceEditParams struct {
297
310
Label string `json:"label,omitempty"`
Original file line number Diff line number Diff line change @@ -159,4 +159,14 @@ func TestVariousMessages(t *testing.T) {
159
159
err := json .Unmarshal ([]byte (msg ), & symbol )
160
160
require .NoError (t , err )
161
161
})
162
+
163
+ t .Run ("EmptyDocumentSymbolMarshalUnmarshal" , func (t * testing.T ) {
164
+ var symbol DocumentSymbolArrayOrSymbolInformationArray
165
+ err := json .Unmarshal ([]byte (`[]` ), & symbol )
166
+ require .NoError (t , err )
167
+ data , err := json .Marshal (symbol )
168
+ require .Equal (t , "[]" , string (data ))
169
+ data , err = json .Marshal (& symbol )
170
+ require .Equal (t , "[]" , string (data ))
171
+ })
162
172
}
You can’t perform that action at this time.
0 commit comments