10 "golang.org/x/tools/go/analysis"
11 "golang.org/x/tools/go/analysis/analysistest"
12 "golang.org/x/tools/go/analysis/internal/checker"
13 "golang.org/x/tools/go/analysis/passes/inspect"
14 "golang.org/x/tools/go/ast/inspector"
15 "golang.org/x/tools/internal/testenv"
20 func TestApplyFixes(t *testing.T) {
21 testenv.NeedsGoPackages(t)
26 files := map[string]string{
27 "rename/test.go": `package rename
36 want := `package rename
46 testdata, cleanup, err := analysistest.WriteFiles(files)
50 path := filepath.Join(testdata, "src/rename/test.go")
52 checker.Run([]string{"file=" + path}, []*analysis.Analyzer{analyzer})
54 contents, err := ioutil.ReadFile(path)
59 got := string(contents)
61 t.Errorf("contents of rewritten file\ngot: %s\nwant: %s", got, want)
67 var analyzer = &analysis.Analyzer{
69 Requires: []*analysis.Analyzer{inspect.Analyzer},
73 func run(pass *analysis.Pass) (interface{}, error) {
74 inspect := pass.ResultOf[inspect.Analyzer].(*inspector.Inspector)
75 nodeFilter := []ast.Node{(*ast.Ident)(nil)}
76 inspect.Preorder(nodeFilter, func(n ast.Node) {
77 ident := n.(*ast.Ident)
78 if ident.Name == from {
79 msg := fmt.Sprintf("renaming %q to %q", from, to)
80 pass.Report(analysis.Diagnostic{
84 SuggestedFixes: []analysis.SuggestedFix{{
86 TextEdits: []analysis.TextEdit{{