From cbc5a7c5825263a0f7593d590beb5ecf993cada0 Mon Sep 17 00:00:00 2001 From: Remy Suen Date: Fri, 4 Jul 2025 11:07:43 -0400 Subject: [PATCH] Prevent index error if code completion triggered on an empty JSON document Signed-off-by: Remy Suen --- CHANGELOG.md | 8 ++++++++ internal/compose/completion.go | 3 +++ internal/compose/completion_test.go | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d4a95e..0ac7924 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to the Docker Language Server will be documented in this file. +## [Unreleased] + +### Fixed + +- Compose + - textDocument/completion + - prevent errors if an empty JSON object is the content of the YAML file ([#330](https://github.com/docker/docker-language-server/issues/330)) + ## [0.12.0] - 2025-06-12 ### Added diff --git a/internal/compose/completion.go b/internal/compose/completion.go index 96ce96f..a92605c 100644 --- a/internal/compose/completion.go +++ b/internal/compose/completion.go @@ -187,6 +187,9 @@ func Completion(ctx context.Context, params *protocol.CompletionParams, manager if file == nil || len(file.Docs) == 0 { return nil, nil } + if m, ok := file.Docs[0].Body.(*ast.MappingNode); ok && len(m.Values) == 0 { + return nil, nil + } lspLine := int(params.Position.Line) topLevelNodeOffset := calculateTopLevelNodeOffset(file) diff --git a/internal/compose/completion_test.go b/internal/compose/completion_test.go index 86090bd..1aaf8e1 100644 --- a/internal/compose/completion_test.go +++ b/internal/compose/completion_test.go @@ -2762,6 +2762,13 @@ services: }, }, }, + { + name: "empty JSON object", + content: "{}", + line: 0, + character: 0, + list: nil, + }, } composeFileURI := fmt.Sprintf("file:///%v", strings.TrimPrefix(filepath.ToSlash(filepath.Join(os.TempDir(), "compose.yaml")), "/"))