mirror of
https://github.com/golang/go
synced 2024-11-18 20:14:43 -07:00
1baf5b43f6
Env is used in the debug template, but not available. Change-Id: I8e270464aecd927bc553bfbf9e7c85a477833890 Reviewed-on: https://go-review.googlesource.com/c/tools/+/217085 Run-TryBot: Robert Findley <rfindley@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
65 lines
1.5 KiB
Go
65 lines
1.5 KiB
Go
// Copyright 2019 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 (
|
|
"sort"
|
|
|
|
"golang.org/x/tools/internal/lsp/debug"
|
|
"golang.org/x/tools/internal/span"
|
|
)
|
|
|
|
type debugView struct{ *view }
|
|
|
|
func (v debugView) ID() string { return v.id }
|
|
func (v debugView) Session() debug.Session { return debugSession{v.session} }
|
|
func (v debugView) Env() []string { return v.Options().Env }
|
|
|
|
type debugSession struct{ *session }
|
|
|
|
func (s debugSession) ID() string { return s.id }
|
|
func (s debugSession) Cache() debug.Cache { return debugCache{s.cache} }
|
|
func (s debugSession) Files() []*debug.File {
|
|
var files []*debug.File
|
|
seen := make(map[span.URI]*debug.File)
|
|
s.overlayMu.Lock()
|
|
defer s.overlayMu.Unlock()
|
|
for _, overlay := range s.overlays {
|
|
f, ok := seen[overlay.uri]
|
|
if !ok {
|
|
f = &debug.File{Session: s, URI: overlay.uri}
|
|
seen[overlay.uri] = f
|
|
files = append(files, f)
|
|
}
|
|
f.Data = string(overlay.text)
|
|
f.Error = nil
|
|
f.Hash = overlay.hash
|
|
}
|
|
sort.Slice(files, func(i int, j int) bool {
|
|
return files[i].URI < files[j].URI
|
|
})
|
|
return files
|
|
}
|
|
|
|
func (s debugSession) File(hash string) *debug.File {
|
|
s.overlayMu.Lock()
|
|
defer s.overlayMu.Unlock()
|
|
for _, overlay := range s.overlays {
|
|
if overlay.hash == hash {
|
|
return &debug.File{
|
|
Session: s,
|
|
URI: overlay.uri,
|
|
Data: string(overlay.text),
|
|
Error: nil,
|
|
Hash: overlay.hash,
|
|
}
|
|
}
|
|
}
|
|
return &debug.File{
|
|
Session: s,
|
|
Hash: hash,
|
|
}
|
|
}
|