aboutsummaryrefslogtreecommitdiff
path: root/gopls/internal/lsp/cache/debug.go
diff options
context:
space:
mode:
Diffstat (limited to 'gopls/internal/lsp/cache/debug.go')
-rw-r--r--gopls/internal/lsp/cache/debug.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/gopls/internal/lsp/cache/debug.go b/gopls/internal/lsp/cache/debug.go
new file mode 100644
index 000000000..9d9de6322
--- /dev/null
+++ b/gopls/internal/lsp/cache/debug.go
@@ -0,0 +1,55 @@
+// Copyright 2022 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 cache
+
+import (
+ "fmt"
+ "os"
+ "sort"
+)
+
+// This file contains helpers that can be used to instrument code while
+// debugging.
+
+// debugEnabled toggles the helpers below.
+const debugEnabled = false
+
+// If debugEnabled is true, debugf formats its arguments and prints to stderr.
+// If debugEnabled is false, it is a no-op.
+func debugf(format string, args ...interface{}) {
+ if !debugEnabled {
+ return
+ }
+ if false {
+ _ = fmt.Sprintf(format, args...) // encourage vet to validate format strings
+ }
+ fmt.Fprintf(os.Stderr, ">>> "+format+"\n", args...)
+}
+
+// If debugEnabled is true, dumpWorkspace prints a summary of workspace
+// packages to stderr. If debugEnabled is false, it is a no-op.
+//
+// TODO(rfindley): this has served its purpose. Delete.
+func (s *snapshot) dumpWorkspace(context string) {
+ if !debugEnabled {
+ return
+ }
+
+ debugf("workspace (after %s):", context)
+ var ids []PackageID
+ for id := range s.workspacePackages {
+ ids = append(ids, id)
+ }
+
+ sort.Slice(ids, func(i, j int) bool {
+ return ids[i] < ids[j]
+ })
+
+ for _, id := range ids {
+ pkgPath := s.workspacePackages[id]
+ _, ok := s.meta.metadata[id]
+ debugf(" %s:%s (metadata: %t)", id, pkgPath, ok)
+ }
+}