mirror of
https://github.com/golang/go
synced 2024-11-18 21:44:45 -07:00
caa0b0f7d5
When looking for references, look in the entire workspace rather than the same package. This makes the references query more expensive because it needs to look at every package in the workspace, but hopefully it shouln't be user-noticable. This can be made more efficient by only checking packages that are transitive reverse dependencies. I don't think a mechanism to get all transitive reverse dependencies exists yet. One of the references test have been changed: it looked up references of the builtin int type, but now there are so many refererences that the test too slow and doesn't make sense any more. Instead look up references of the type "i" in that file. Change-Id: I93b3bd3795386f06ce488e76e6c7c8c1b1074e22 Reviewed-on: https://go-review.googlesource.com/c/tools/+/206883 Run-TryBot: Michael Matloob <matloob@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
46 lines
1.1 KiB
Go
46 lines
1.1 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 cmdtest
|
|
|
|
import (
|
|
"fmt"
|
|
"sort"
|
|
"testing"
|
|
|
|
"golang.org/x/tools/internal/lsp/cmd"
|
|
"golang.org/x/tools/internal/tool"
|
|
|
|
"golang.org/x/tools/internal/span"
|
|
)
|
|
|
|
func (r *runner) References(t *testing.T, spn span.Span, itemList []span.Span) {
|
|
var itemStrings []string
|
|
for _, i := range itemList {
|
|
itemStrings = append(itemStrings, fmt.Sprint(i))
|
|
}
|
|
sort.Strings(itemStrings)
|
|
var expect string
|
|
for _, i := range itemStrings {
|
|
expect += i + "\n"
|
|
}
|
|
|
|
uri := spn.URI()
|
|
filename := uri.Filename()
|
|
target := filename + fmt.Sprintf(":%v:%v", spn.Start().Line(), spn.Start().Column())
|
|
|
|
app := cmd.New("gopls-test", r.data.Config.Dir, r.data.Config.Env, r.options)
|
|
got := CaptureStdOut(t, func() {
|
|
err := tool.Run(r.ctx, app, append([]string{"-remote=internal", "references"}, target))
|
|
if err != nil {
|
|
fmt.Println(spn.Start().Line())
|
|
fmt.Println(err)
|
|
}
|
|
})
|
|
|
|
if expect != got {
|
|
t.Errorf("references failed for %s expected:\n%s\ngot:\n%s", target, expect, got)
|
|
}
|
|
}
|