From 2cbe144a5b7ad112741cf21a8da75179d7e0c0cc Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Mon, 19 Oct 2020 13:22:22 -0400 Subject: [PATCH] internal/lsp: return code lenses in a deterministic order Fixes golang/go#41961 Change-Id: I65f333caaa8568d90a59594019ac4296b8f56b98 Reviewed-on: https://go-review.googlesource.com/c/tools/+/263527 Trust: Rebecca Stambler Run-TryBot: Rebecca Stambler gopls-CI: kokoro TryBot-Result: Go Bot Reviewed-by: Heschi Kreinick --- internal/lsp/code_lens.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/internal/lsp/code_lens.go b/internal/lsp/code_lens.go index b9891abefb..7681a83345 100644 --- a/internal/lsp/code_lens.go +++ b/internal/lsp/code_lens.go @@ -7,6 +7,7 @@ package lsp import ( "context" "fmt" + "sort" "golang.org/x/tools/internal/event" "golang.org/x/tools/internal/lsp/mod" @@ -44,5 +45,12 @@ func (s *Server) codeLens(ctx context.Context, params *protocol.CodeLensParams) } result = append(result, added...) } + sort.Slice(result, func(i, j int) bool { + a, b := result[i], result[j] + if protocol.CompareRange(a.Range, b.Range) == 0 { + return a.Command.Command < b.Command.Command + } + return protocol.CompareRange(a.Range, b.Range) < 0 + }) return result, nil }