diff --git a/internal/lsp/cmd/test/definition.go b/internal/lsp/cmd/test/definition.go index 158d943188..2857dda926 100644 --- a/internal/lsp/cmd/test/definition.go +++ b/internal/lsp/cmd/test/definition.go @@ -35,7 +35,9 @@ var godefModes = []godefMode{ func (r *runner) Definition(t *testing.T, data tests.Definitions) { // TODO: https://golang.org/issue/32794. - t.Skip() + if !*tests.UpdateGolden { + t.Skip() + } for _, d := range data { if d.IsType || d.OnlyHover { // TODO: support type definition, hover queries diff --git a/internal/lsp/cmd/test/rename.go b/internal/lsp/cmd/test/rename.go index b7fd272938..16fcb086d6 100644 --- a/internal/lsp/cmd/test/rename.go +++ b/internal/lsp/cmd/test/rename.go @@ -28,10 +28,6 @@ func (r *runner) Rename(t *testing.T, data tests.Renames) { filename := spn.URI().Filename() for _, mode := range renameModes { goldenTag := data[spn] + strings.Join(mode, "") + "-rename" - expect := string(r.data.Golden(goldenTag, filename, func() ([]byte, error) { - return []byte{}, nil - })) - app := cmd.New("gopls-test", r.data.Config.Dir, r.data.Config.Env) loc := fmt.Sprintf("%v", spn) args := []string{"-remote=internal", "rename"} @@ -47,6 +43,9 @@ func (r *runner) Rename(t *testing.T, data tests.Renames) { got = err.Error() } got = normalizePaths(r.data, got) + expect := string(r.data.Golden(goldenTag, filename, func() ([]byte, error) { + return []byte(got), nil + })) if expect != got { t.Errorf("rename failed with %#v expected:\n%s\ngot:\n%s", args, expect, got) } diff --git a/internal/lsp/lsp_test.go b/internal/lsp/lsp_test.go index 44a5729cc4..f32e6b1e3f 100644 --- a/internal/lsp/lsp_test.go +++ b/internal/lsp/lsp_test.go @@ -332,11 +332,6 @@ func (r *runner) SuggestedFix(t *testing.T, data tests.SuggestedFixes) { uri := spn.URI() filename := uri.Filename() view := r.server.session.ViewOf(uri) - fixed := string(r.data.Golden("suggestedfix", filename, func() ([]byte, error) { - cmd := exec.Command("suggestedfix", filename) // TODO(matloob): what do we do here? - out, _ := cmd.Output() // ignore error, sometimes we have intentionally ungofmt-able files - return out, nil - })) f, err := getGoFile(r.ctx, view, uri) if err != nil { t.Fatal(err) @@ -355,9 +350,7 @@ func (r *runner) SuggestedFix(t *testing.T, data tests.SuggestedFixes) { }, }) if err != nil { - if fixed != "" { - t.Error(err) - } + t.Error(err) continue } m, err := r.data.Mapper(f.URI()) @@ -375,6 +368,9 @@ func (r *runner) SuggestedFix(t *testing.T, data tests.SuggestedFixes) { t.Error(err) } got := diff.ApplyEdits(string(m.Content), sedits) + fixed := string(r.data.Golden("suggestedfix", filename, func() ([]byte, error) { + return []byte(got), nil + })) if fixed != got { t.Errorf("suggested fixes failed for %s, expected:\n%v\ngot:\n%v", filename, fixed, got) } diff --git a/internal/lsp/reset_golden.sh b/internal/lsp/reset_golden.sh index 9439ed0b39..2689407ca1 100755 --- a/internal/lsp/reset_golden.sh +++ b/internal/lsp/reset_golden.sh @@ -1,4 +1,6 @@ #!/bin/bash find ./internal/lsp/ -name *.golden -delete -go test ./internal/lsp/ ./internal/lsp/cmd ./internal/lsp/source -golden +go test ./internal/lsp/source -golden +go test ./internal/lsp/ -golden +go test ./internal/lsp/cmd -golden diff --git a/internal/lsp/testdata/folding/bad.go.golden b/internal/lsp/testdata/folding/bad.go.golden index a502d50847..ab274f75ac 100644 --- a/internal/lsp/testdata/folding/bad.go.golden +++ b/internal/lsp/testdata/folding/bad.go.golden @@ -44,25 +44,6 @@ func badBar() string { x := true return } --- foldingRange-comment-0 -- -package folding //@fold("package") - -import ( "fmt" - _ "log" -) - -import ( - _ "os" ) - -// badBar is a function.<> -func badBar() string { x := true - if x { - fmt.Println("true") - } else { - fmt.Println("false") } - return -} - -- foldingRange-imports-0 -- package folding //@fold("package") @@ -98,22 +79,3 @@ func badBar() string { x := true return } --- foldingRange-lineFolding-comment-0 -- -package folding //@fold("package") - -import ( "fmt" - _ "log" -) - -import ( - _ "os" ) - -// badBar is a function.<> -func badBar() string { x := true - if x { - fmt.Println("true") - } else { - fmt.Println("false") } - return -} - diff --git a/internal/lsp/testdata/godef/a/a.go.golden b/internal/lsp/testdata/godef/a/a.go.golden index 0d2a49ca20..87b792e5e6 100644 --- a/internal/lsp/testdata/godef/a/a.go.golden +++ b/internal/lsp/testdata/godef/a/a.go.golden @@ -1,6 +1,5 @@ -- Random-definition -- godef/a/random.go:3:6-12: defined here as func Random() int - -- Random-definition-json -- { "span": { @@ -23,7 +22,6 @@ godef/a/random.go:3:6-12: defined here as func Random() int func Random() int -- Random2-definition -- godef/a/random.go:8:6-13: defined here as func Random2(y int) int - -- Random2-definition-json -- { "span": { @@ -46,7 +44,6 @@ godef/a/random.go:8:6-13: defined here as func Random2(y int) int func Random2(y int) int -- err-definition -- godef/a/a.go:14:6-9: defined here as var err error - -- err-definition-json -- { "span": { diff --git a/internal/lsp/testdata/godef/a/d.go.golden b/internal/lsp/testdata/godef/a/d.go.golden index 6c7cf0960a..a421d0474b 100644 --- a/internal/lsp/testdata/godef/a/d.go.golden +++ b/internal/lsp/testdata/godef/a/d.go.golden @@ -1,6 +1,6 @@ -- Member-definition -- -godef/a/d.go:6:2-8: defined here as field Member string - +godef/a/d.go:6:2-8: defined here as @Member +field Member string -- Member-definition-json -- { "span": { @@ -16,7 +16,7 @@ godef/a/d.go:6:2-8: defined here as field Member string "offset": 61 } }, - "description": "field Member string" + "description": "@Member\nfield Member string" } -- Member-hover -- @@ -24,7 +24,6 @@ godef/a/d.go:6:2-8: defined here as field Member string field Member string -- Method-definition -- godef/a/d.go:15:16-22: defined here as func (Thing).Method(i int) string - -- Method-definition-json -- { "span": { @@ -47,7 +46,6 @@ godef/a/d.go:15:16-22: defined here as func (Thing).Method(i int) string func (Thing).Method(i int) string -- Other-definition -- godef/a/d.go:9:5-10: defined here as var Other Thing - -- Other-definition-json -- { "span": { @@ -72,7 +70,6 @@ var Other Thing godef/a/d.go:5:6-11: defined here as Thing struct { Member string //@Member } - -- Thing-definition-json -- { "span": { @@ -97,7 +94,6 @@ Thing struct { } -- Things-definition -- godef/a/d.go:11:6-12: defined here as func Things(val []string) []Thing - -- Things-definition-json -- { "span": { diff --git a/internal/lsp/testdata/godef/a/f.go.golden b/internal/lsp/testdata/godef/a/f.go.golden index c7cb59afca..17574b82a3 100644 --- a/internal/lsp/testdata/godef/a/f.go.golden +++ b/internal/lsp/testdata/godef/a/f.go.golden @@ -1,6 +1,5 @@ -- switchStringY-definition -- godef/a/f.go:8:9-10: defined here as var y string - -- switchStringY-definition-json -- { "span": { @@ -19,12 +18,10 @@ godef/a/f.go:8:9-10: defined here as var y string "description": "var y string" } - -- switchStringY-hover -- var y string -- switchY-definition -- godef/a/f.go:8:9-10: defined here as var y int - -- switchY-definition-json -- { "span": { @@ -43,6 +40,5 @@ godef/a/f.go:8:9-10: defined here as var y int "description": "var y int" } - -- switchY-hover -- var y int diff --git a/internal/lsp/testdata/godef/a/random.go.golden b/internal/lsp/testdata/godef/a/random.go.golden index 0775d55282..d215bc89f4 100644 --- a/internal/lsp/testdata/godef/a/random.go.golden +++ b/internal/lsp/testdata/godef/a/random.go.golden @@ -1,6 +1,5 @@ -- PosSum-definition -- godef/a/random.go:16:15-18: defined here as func (*Pos).Sum() int - -- PosSum-definition-json -- { "span": { @@ -22,8 +21,8 @@ godef/a/random.go:16:15-18: defined here as func (*Pos).Sum() int -- PosSum-hover -- func (*Pos).Sum() int -- PosX-definition -- -godef/a/random.go:13:2-3: defined here as field x int - +godef/a/random.go:13:2-3: defined here as @mark(PosX, "x"),mark(PosY, "y") +field x int -- PosX-definition-json -- { "span": { @@ -39,7 +38,7 @@ godef/a/random.go:13:2-3: defined here as field x int "offset": 188 } }, - "description": "field x int" + "description": "@mark(PosX, \"x\"),mark(PosY, \"y\")\nfield x int" } -- PosX-hover -- @@ -47,7 +46,6 @@ godef/a/random.go:13:2-3: defined here as field x int field x int -- RandomParamY-definition -- godef/a/random.go:8:14-15: defined here as var y int - -- RandomParamY-definition-json -- { "span": { diff --git a/internal/lsp/testdata/godef/b/b.go.golden b/internal/lsp/testdata/godef/b/b.go.golden index e3b0d1941d..07b1333e15 100644 --- a/internal/lsp/testdata/godef/b/b.go.golden +++ b/internal/lsp/testdata/godef/b/b.go.golden @@ -1,6 +1,5 @@ -- A-definition -- godef/a/a.go:7:6-7: defined here as A string //@A - -- A-definition-json -- { "span": { @@ -24,7 +23,6 @@ A string //@A -- AImport-definition -- godef/b/b.go:5:2: defined here as package a ("golang.org/x/tools/internal/lsp/godef/a") - -- AImport-definition-json -- { "span": { @@ -32,12 +30,12 @@ godef/b/b.go:5:2: defined here as package a ("golang.org/x/tools/internal/lsp/go "start": { "line": 5, "column": 2, - "offset": 121 + "offset": 137 }, "end": { "line": 5, "column": 2, - "offset": 121 + "offset": 137 } }, "description": "package a (\"golang.org/x/tools/internal/lsp/godef/a\")" @@ -46,23 +44,23 @@ godef/b/b.go:5:2: defined here as package a ("golang.org/x/tools/internal/lsp/go -- AImport-hover -- package a ("golang.org/x/tools/internal/lsp/godef/a") -- PackageFoo-definition -- -foo/foo.go:1:9-12: defined here as +foo/foo.go:1:1-30:16: defined here as myFoo "golang.org/x/tools/internal/lsp/foo" //@mark(myFoo, "myFoo"),godef("foo", PackageFoo),godef("myFoo", myFoo) -- PackageFoo-definition-json -- { "span": { "uri": "file://foo/foo.go", "start": { "line": 1, - "column": 9, - "offset": 8 + "column": 1, + "offset": 0 }, "end": { - "line": 1, - "column": 12, - "offset": 11 + "line": 30, + "column": 16, + "offset": 844 } }, - "description": "" + "description": "myFoo \"golang.org/x/tools/internal/lsp/foo\" //@mark(myFoo, \"myFoo\"),godef(\"foo\", PackageFoo),godef(\"myFoo\", myFoo)" } -- PackageFoo-hover -- @@ -74,7 +72,6 @@ godef/b/b.go:8:6-8: defined here as S1 struct { S2 //@godef("S2", S2), mark(S1S2, "S2") a.A //@godef("A", A) } - -- S1-definition-json -- { "span": { @@ -82,12 +79,12 @@ godef/b/b.go:8:6-8: defined here as S1 struct { "start": { "line": 8, "column": 6, - "offset": 196 + "offset": 212 }, "end": { "line": 8, "column": 8, - "offset": 198 + "offset": 214 } }, "description": "S1 struct {\n\tF1 int //@mark(S1F1, \"F1\")\n\tS2 //@godef(\"S2\", S2), mark(S1S2, \"S2\")\n\ta.A //@godef(\"A\", A)\n}" @@ -100,8 +97,8 @@ S1 struct { a.A //@godef("A", A) } -- S1F1-definition -- -godef/b/b.go:9:2-4: defined here as field F1 int - +godef/b/b.go:9:2-4: defined here as @mark(S1F1, "F1") +field F1 int -- S1F1-definition-json -- { "span": { @@ -109,23 +106,23 @@ godef/b/b.go:9:2-4: defined here as field F1 int "start": { "line": 9, "column": 2, - "offset": 215 + "offset": 231 }, "end": { "line": 9, "column": 4, - "offset": 217 + "offset": 233 } }, - "description": "field F1 int" + "description": "@mark(S1F1, \"F1\")\nfield F1 int" } -- S1F1-hover -- @mark(S1F1, "F1") field F1 int -- S1S2-definition -- -godef/b/b.go:10:2-4: defined here as field S2 S2 - +godef/b/b.go:10:2-4: defined here as @godef("S2", S2), mark(S1S2, "S2") +field S2 S2 -- S1S2-definition-json -- { "span": { @@ -133,15 +130,15 @@ godef/b/b.go:10:2-4: defined here as field S2 S2 "start": { "line": 10, "column": 2, - "offset": 244 + "offset": 260 }, "end": { "line": 10, "column": 4, - "offset": 246 + "offset": 262 } }, - "description": "field S2 S2" + "description": "@godef(\"S2\", S2), mark(S1S2, \"S2\")\nfield S2 S2" } -- S1S2-hover -- @@ -153,7 +150,6 @@ godef/b/b.go:14:6-8: defined here as S2 struct { F2 int //@mark(S2F2, "F2") *a.A //@godef("A", A),godef("a",AImport) } - -- S2-definition-json -- { "span": { @@ -161,12 +157,12 @@ godef/b/b.go:14:6-8: defined here as S2 struct { "start": { "line": 14, "column": 6, - "offset": 323 + "offset": 339 }, "end": { "line": 14, "column": 8, - "offset": 325 + "offset": 341 } }, "description": "S2 struct {\n\tF1 string //@mark(S2F1, \"F1\")\n\tF2 int //@mark(S2F2, \"F2\")\n\t*a.A //@godef(\"A\", A),godef(\"a\",AImport)\n}" @@ -179,8 +175,8 @@ S2 struct { *a.A //@godef("A", A),godef("a",AImport) } -- S2F1-definition -- -godef/b/b.go:15:2-4: defined here as field F1 string - +godef/b/b.go:15:2-4: defined here as @mark(S2F1, "F1") +field F1 string -- S2F1-definition-json -- { "span": { @@ -188,23 +184,23 @@ godef/b/b.go:15:2-4: defined here as field F1 string "start": { "line": 15, "column": 2, - "offset": 342 + "offset": 358 }, "end": { "line": 15, "column": 4, - "offset": 344 + "offset": 360 } }, - "description": "field F1 string" + "description": "@mark(S2F1, \"F1\")\nfield F1 string" } -- S2F1-hover -- @mark(S2F1, "F1") field F1 string -- S2F2-definition -- -godef/b/b.go:16:2-4: defined here as field F2 int - +godef/b/b.go:16:2-4: defined here as @mark(S2F2, "F2") +field F2 int -- S2F2-definition-json -- { "span": { @@ -212,15 +208,15 @@ godef/b/b.go:16:2-4: defined here as field F2 int "start": { "line": 16, "column": 2, - "offset": 375 + "offset": 391 }, "end": { "line": 16, "column": 4, - "offset": 377 + "offset": 393 } }, - "description": "field F2 int" + "description": "@mark(S2F2, \"F2\")\nfield F2 int" } -- S2F2-hover -- @@ -228,7 +224,6 @@ godef/b/b.go:16:2-4: defined here as field F2 int field F2 int -- Stuff-definition -- godef/a/a.go:9:6-11: defined here as func a.Stuff() - -- Stuff-definition-json -- { "span": { @@ -249,5 +244,25 @@ godef/a/a.go:9:6-11: defined here as func a.Stuff() -- Stuff-hover -- func a.Stuff() +-- myFoo-definition -- +godef/b/b.go:4:2-7: defined here as package myFoo ("golang.org/x/tools/internal/lsp/foo") +-- myFoo-definition-json -- +{ + "span": { + "uri": "file://godef/b/b.go", + "start": { + "line": 4, + "column": 2, + "offset": 21 + }, + "end": { + "line": 4, + "column": 7, + "offset": 26 + } + }, + "description": "package myFoo (\"golang.org/x/tools/internal/lsp/foo\")" +} + -- myFoo-hover -- package myFoo ("golang.org/x/tools/internal/lsp/foo") diff --git a/internal/lsp/testdata/godef/b/c.go.golden b/internal/lsp/testdata/godef/b/c.go.golden index 62fb184149..e05adcdff8 100644 --- a/internal/lsp/testdata/godef/b/c.go.golden +++ b/internal/lsp/testdata/godef/b/c.go.golden @@ -4,7 +4,6 @@ godef/b/b.go:8:6-8: defined here as S1 struct { S2 //@godef("S2", S2), mark(S1S2, "S2") a.A //@godef("A", A) } - -- S1-definition-json -- { "span": { @@ -12,12 +11,12 @@ godef/b/b.go:8:6-8: defined here as S1 struct { "start": { "line": 8, "column": 6, - "offset": 196 + "offset": 212 }, "end": { "line": 8, "column": 8, - "offset": 198 + "offset": 214 } }, "description": "S1 struct {\n\tF1 int //@mark(S1F1, \"F1\")\n\tS2 //@godef(\"S2\", S2), mark(S1S2, \"S2\")\n\ta.A //@godef(\"A\", A)\n}" @@ -30,8 +29,8 @@ S1 struct { a.A //@godef("A", A) } -- S1F1-definition -- -godef/b/b.go:9:2-4: defined here as field F1 int - +godef/b/b.go:9:2-4: defined here as @mark(S1F1, "F1") +field F1 int -- S1F1-definition-json -- { "span": { @@ -39,15 +38,15 @@ godef/b/b.go:9:2-4: defined here as field F1 int "start": { "line": 9, "column": 2, - "offset": 215 + "offset": 231 }, "end": { "line": 9, "column": 4, - "offset": 217 + "offset": 233 } }, - "description": "field F1 int" + "description": "@mark(S1F1, \"F1\")\nfield F1 int" } -- S1F1-hover -- diff --git a/internal/lsp/testdata/godef/b/e.go.golden b/internal/lsp/testdata/godef/b/e.go.golden index 8ff469ef00..9479ea2a77 100644 --- a/internal/lsp/testdata/godef/b/e.go.golden +++ b/internal/lsp/testdata/godef/b/e.go.golden @@ -1,6 +1,6 @@ -- Member-definition -- -godef/a/d.go:6:2-8: defined here as field Member string - +godef/a/d.go:6:2-8: defined here as @Member +field Member string -- Member-definition-json -- { "span": { @@ -16,7 +16,7 @@ godef/a/d.go:6:2-8: defined here as field Member string "offset": 61 } }, - "description": "field Member string" + "description": "@Member\nfield Member string" } -- Member-hover -- @@ -24,7 +24,6 @@ godef/a/d.go:6:2-8: defined here as field Member string field Member string -- Other-definition -- godef/a/d.go:9:5-10: defined here as var a.Other a.Thing - -- Other-definition-json -- { "span": { @@ -49,7 +48,6 @@ var a.Other a.Thing godef/a/d.go:5:6-11: defined here as Thing struct { Member string //@Member } - -- Thing-definition-json -- { "span": { @@ -74,7 +72,6 @@ Thing struct { } -- Things-definition -- godef/a/d.go:11:6-12: defined here as func a.Things(val []string) []a.Thing - -- Things-definition-json -- { "span": { diff --git a/internal/lsp/testdata/godef/broken/unclosedIf.go.golden b/internal/lsp/testdata/godef/broken/unclosedIf.go.golden index 2ed081a5f9..c546e26772 100644 --- a/internal/lsp/testdata/godef/broken/unclosedIf.go.golden +++ b/internal/lsp/testdata/godef/broken/unclosedIf.go.golden @@ -1,6 +1,5 @@ -- myUnclosedIf-definition -- godef/broken/unclosedIf.go:7:7-19: defined here as var myUnclosedIf string - -- myUnclosedIf-definition-json -- { "span": { diff --git a/internal/lsp/testdata/imports/good_imports.go.golden b/internal/lsp/testdata/imports/good_imports.go.golden index eabb5b80da..d37a6c7511 100644 --- a/internal/lsp/testdata/imports/good_imports.go.golden +++ b/internal/lsp/testdata/imports/good_imports.go.golden @@ -7,5 +7,3 @@ func _() { fmt.Println("") } --- goimports-d -- - diff --git a/internal/lsp/testdata/imports/needs_imports.go.golden b/internal/lsp/testdata/imports/needs_imports.go.golden index d09104bea0..fd6032874e 100644 --- a/internal/lsp/testdata/imports/needs_imports.go.golden +++ b/internal/lsp/testdata/imports/needs_imports.go.golden @@ -11,17 +11,3 @@ func goodbye() { log.Printf("byeeeee") } --- goimports-d -- ---- imports/needs_imports.go.orig -+++ imports/needs_imports.go -@@ -1,5 +1,10 @@ - package imports //@import("package") - -+import ( -+ "fmt" -+ "log" -+) -+ - func goodbye() { - fmt.Printf("HI") - log.Printf("byeeeee") \ No newline at end of file diff --git a/internal/lsp/testdata/noparse_format/parse_format.go.golden b/internal/lsp/testdata/noparse_format/parse_format.go.golden index 474ad90bb2..1191b9602a 100644 --- a/internal/lsp/testdata/noparse_format/parse_format.go.golden +++ b/internal/lsp/testdata/noparse_format/parse_format.go.golden @@ -6,4 +6,15 @@ func _() { } -- gofmt-d -- +--- noparse_format/parse_format.go.orig ++++ noparse_format/parse_format.go +@@ -1,5 +1,5 @@ + package noparse_format //@format("package") + + func _() { +-f() +-} +\ No newline at end of file ++ f() ++} diff --git a/internal/lsp/testdata/rename/a/random.go.golden b/internal/lsp/testdata/rename/a/random.go.golden index 135e43a488..126e7740eb 100644 --- a/internal/lsp/testdata/rename/a/random.go.golden +++ b/internal/lsp/testdata/rename/a/random.go.golden @@ -1,3 +1,23 @@ +-- GetSum-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -19,13 +19,13 @@ + x, y int + } + +-func (p *Pos) Sum() int { ++func (p *Pos) GetSum() int { + return p.x + p.y //@rename("x", "myX") + } + + func _() { + var p Pos //@rename("p", "pos") +- _ = p.Sum() //@rename("Sum", "GetSum") ++ _ = p.GetSum() //@rename("Sum", "GetSum") + } + + func sw() { + -- GetSum-rename -- random.go: package a @@ -43,6 +63,27 @@ func sw() { } } +-- f2name-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -3,7 +3,7 @@ + import ( + lg "log" + "fmt" //@rename("fmt", "fmty") +- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") ++ f2name "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) + + func Random() int { +@@ -37,6 +37,6 @@ + case string: + lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2name.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- f2name-rename -- random.go: package a @@ -88,6 +129,27 @@ func sw() { } } +-- f2y-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -3,7 +3,7 @@ + import ( + lg "log" + "fmt" //@rename("fmt", "fmty") +- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") ++ f2y "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) + + func Random() int { +@@ -37,6 +37,6 @@ + case string: + lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2y.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- f2y-rename -- random.go: package a @@ -133,6 +195,27 @@ func sw() { } } +-- fmt2-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -3,7 +3,7 @@ + import ( + lg "log" + "fmt" //@rename("fmt", "fmty") +- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") ++ fmt2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) + + func Random() int { +@@ -37,6 +37,6 @@ + case string: + lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ fmt2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- fmt2-rename -- random.go: package a @@ -178,6 +261,28 @@ func sw() { } } +-- fmty-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -2,7 +2,7 @@ + + import ( + lg "log" +- "fmt" //@rename("fmt", "fmty") ++ fmty "fmt" //@rename("fmt", "fmty") + f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) + +@@ -33,7 +33,7 @@ + + switch y := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ fmty.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") + case string: + lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: + -- fmty-rename -- random.go: package a @@ -223,6 +328,28 @@ func sw() { } } +-- format-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -2,7 +2,7 @@ + + import ( + lg "log" +- "fmt" //@rename("fmt", "fmty") ++ format "fmt" //@rename("fmt", "fmty") + f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) + +@@ -33,7 +33,7 @@ + + switch y := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ format.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") + case string: + lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: + -- format-rename -- random.go: package a @@ -268,6 +395,28 @@ func sw() { } } +-- log-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -1,7 +1,7 @@ + package a + + import ( +- lg "log" ++ "log" + "fmt" //@rename("fmt", "fmty") + f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") + ) +@@ -35,7 +35,7 @@ + case int: + fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") + case string: +- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") ++ log.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") + default: + f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") + } + -- log-rename -- random.go: package a @@ -313,6 +462,24 @@ func sw() { } } +-- myX-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -16,11 +16,11 @@ + } + + type Pos struct { +- x, y int ++ myX, y int + } + + func (p *Pos) Sum() int { +- return p.x + p.y //@rename("x", "myX") ++ return p.myX + p.y //@rename("x", "myX") + } + + func _() { + -- myX-rename -- random.go: package a @@ -358,6 +525,21 @@ func sw() { } } +-- pos-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -24,8 +24,8 @@ + } + + func _() { +- var p Pos //@rename("p", "pos") +- _ = p.Sum() //@rename("Sum", "GetSum") ++ var pos Pos //@rename("p", "pos") ++ _ = pos.Sum() //@rename("Sum", "GetSum") + } + + func sw() { + -- pos-rename -- random.go: package a @@ -403,6 +585,27 @@ func sw() { } } +-- y0-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -31,12 +31,12 @@ + func sw() { + var x interface{} + +- switch y := x.(type) { //@rename("y", "y0") ++ switch y0 := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ fmt.Printf("%d", y0) //@rename("y", "y1"),rename("fmt", "format") + case string: +- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") ++ lg.Printf("%s", y0) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2.Printf("%v", y0) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- y0-rename -- random.go: package a @@ -448,6 +651,27 @@ func sw() { } } +-- y1-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -31,12 +31,12 @@ + func sw() { + var x interface{} + +- switch y := x.(type) { //@rename("y", "y0") ++ switch y1 := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ fmt.Printf("%d", y1) //@rename("y", "y1"),rename("fmt", "format") + case string: +- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") ++ lg.Printf("%s", y1) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2.Printf("%v", y1) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- y1-rename -- random.go: package a @@ -493,6 +717,27 @@ func sw() { } } +-- y2-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -31,12 +31,12 @@ + func sw() { + var x interface{} + +- switch y := x.(type) { //@rename("y", "y0") ++ switch y2 := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ fmt.Printf("%d", y2) //@rename("y", "y1"),rename("fmt", "format") + case string: +- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") ++ lg.Printf("%s", y2) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2.Printf("%v", y2) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- y2-rename -- random.go: package a @@ -538,6 +783,27 @@ func sw() { } } +-- y3-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -31,12 +31,12 @@ + func sw() { + var x interface{} + +- switch y := x.(type) { //@rename("y", "y0") ++ switch y3 := x.(type) { //@rename("y", "y0") + case int: +- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") ++ fmt.Printf("%d", y3) //@rename("y", "y1"),rename("fmt", "format") + case string: +- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") ++ lg.Printf("%s", y3) //@rename("y", "y2"),rename("lg","log") + default: +- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") ++ f2.Printf("%v", y3) //@rename("y", "y3"),rename("f2","fmt2") + } + } + -- y3-rename -- random.go: package a @@ -583,6 +849,21 @@ func sw() { } } +-- z-d-rename -- +--- rename/a/random.go.orig ++++ rename/a/random.go +@@ -11,8 +11,8 @@ + return y + } + +-func Random2(y int) int { //@rename("y", "z") +- return y ++func Random2(z int) int { //@rename("y", "z") ++ return z + } + + type Pos struct { + -- z-rename -- random.go: package a @@ -628,284 +909,3 @@ func sw() { } } --- fmty-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -2,7 +2,7 @@ - - import ( - lg "log" -- "fmt" //@rename("fmt", "fmty") -+ fmty "fmt" //@rename("fmt", "fmty") - f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) - -@@ -33,7 +33,7 @@ - - switch y := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ fmty.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") - case string: - lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: - --- f2name-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -3,7 +3,7 @@ - import ( - lg "log" - "fmt" //@rename("fmt", "fmty") -- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") -+ f2name "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) - - func Random() int { -@@ -37,6 +37,6 @@ - case string: - lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2name.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- f2y-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -3,7 +3,7 @@ - import ( - lg "log" - "fmt" //@rename("fmt", "fmty") -- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") -+ f2y "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) - - func Random() int { -@@ -37,6 +37,6 @@ - case string: - lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2y.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- z-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -11,8 +11,8 @@ - return y - } - --func Random2(y int) int { //@rename("y", "z") -- return y -+func Random2(z int) int { //@rename("y", "z") -+ return z - } - - type Pos struct { - --- myX-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -16,11 +16,11 @@ - } - - type Pos struct { -- x, y int -+ myX, y int - } - - func (p *Pos) Sum() int { -- return p.x + p.y //@rename("x", "myX") -+ return p.myX + p.y //@rename("x", "myX") - } - - func _() { - --- pos-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -24,8 +24,8 @@ - } - - func _() { -- var p Pos //@rename("p", "pos") -- _ = p.Sum() //@rename("Sum", "GetSum") -+ var pos Pos //@rename("p", "pos") -+ _ = pos.Sum() //@rename("Sum", "GetSum") - } - - func sw() { - --- GetSum-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -19,13 +19,13 @@ - x, y int - } - --func (p *Pos) Sum() int { -+func (p *Pos) GetSum() int { - return p.x + p.y //@rename("x", "myX") - } - - func _() { - var p Pos //@rename("p", "pos") -- _ = p.Sum() //@rename("Sum", "GetSum") -+ _ = p.GetSum() //@rename("Sum", "GetSum") - } - - func sw() { - --- y0-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -31,12 +31,12 @@ - func sw() { - var x interface{} - -- switch y := x.(type) { //@rename("y", "y0") -+ switch y0 := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ fmt.Printf("%d", y0) //@rename("y", "y1"),rename("fmt", "format") - case string: -- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") -+ lg.Printf("%s", y0) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2.Printf("%v", y0) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- format-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -2,7 +2,7 @@ - - import ( - lg "log" -- "fmt" //@rename("fmt", "fmty") -+ format "fmt" //@rename("fmt", "fmty") - f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) - -@@ -33,7 +33,7 @@ - - switch y := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ format.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") - case string: - lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: - --- y1-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -31,12 +31,12 @@ - func sw() { - var x interface{} - -- switch y := x.(type) { //@rename("y", "y0") -+ switch y1 := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ fmt.Printf("%d", y1) //@rename("y", "y1"),rename("fmt", "format") - case string: -- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") -+ lg.Printf("%s", y1) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2.Printf("%v", y1) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- log-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -1,7 +1,7 @@ - package a - - import ( -- lg "log" -+ "log" - "fmt" //@rename("fmt", "fmty") - f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) -@@ -35,7 +35,7 @@ - case int: - fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") - case string: -- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") -+ log.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: - f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") - } - --- y2-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -31,12 +31,12 @@ - func sw() { - var x interface{} - -- switch y := x.(type) { //@rename("y", "y0") -+ switch y2 := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ fmt.Printf("%d", y2) //@rename("y", "y1"),rename("fmt", "format") - case string: -- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") -+ lg.Printf("%s", y2) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2.Printf("%v", y2) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- fmt2-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -3,7 +3,7 @@ - import ( - lg "log" - "fmt" //@rename("fmt", "fmty") -- f2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") -+ fmt2 "fmt" //@rename("f2", "f2name"),rename("fmt","f2y") - ) - - func Random() int { -@@ -37,6 +37,6 @@ - case string: - lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ fmt2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") - } - } - --- y3-d-rename -- ---- rename/a/random.go.orig -+++ rename/a/random.go -@@ -31,12 +31,12 @@ - func sw() { - var x interface{} - -- switch y := x.(type) { //@rename("y", "y0") -+ switch y3 := x.(type) { //@rename("y", "y0") - case int: -- fmt.Printf("%d", y) //@rename("y", "y1"),rename("fmt", "format") -+ fmt.Printf("%d", y3) //@rename("y", "y1"),rename("fmt", "format") - case string: -- lg.Printf("%s", y) //@rename("y", "y2"),rename("lg","log") -+ lg.Printf("%s", y3) //@rename("y", "y2"),rename("lg","log") - default: -- f2.Printf("%v", y) //@rename("y", "y3"),rename("f2","fmt2") -+ f2.Printf("%v", y3) //@rename("y", "y3"),rename("f2","fmt2") - } - } - diff --git a/internal/lsp/testdata/rename/b/b.go.golden b/internal/lsp/testdata/rename/b/b.go.golden index e7b6de540b..39831ded4a 100644 --- a/internal/lsp/testdata/rename/b/b.go.golden +++ b/internal/lsp/testdata/rename/b/b.go.golden @@ -1,4 +1,4 @@ --- uint-rename -- -cannot rename builtin "int" -- uint-d-rename -- cannot rename builtin "int" +-- uint-rename -- +cannot rename builtin "int" diff --git a/internal/lsp/testdata/rename/bad/bad.go.golden b/internal/lsp/testdata/rename/bad/bad.go.golden index 8f8140b891..8b436f6e7c 100644 --- a/internal/lsp/testdata/rename/bad/bad.go.golden +++ b/internal/lsp/testdata/rename/bad/bad.go.golden @@ -1,4 +1,4 @@ --- rFunc-rename -- -renaming "sFunc" to "rFunc" not possible because "golang.org/x/tools/internal/lsp/rename/bad" has errors -- rFunc-d-rename -- renaming "sFunc" to "rFunc" not possible because "golang.org/x/tools/internal/lsp/rename/bad" has errors +-- rFunc-rename -- +renaming "sFunc" to "rFunc" not possible because "golang.org/x/tools/internal/lsp/rename/bad" has errors diff --git a/internal/lsp/testdata/rename/testy/testy.go.golden b/internal/lsp/testdata/rename/testy/testy.go.golden index fb9e1175f8..71f7152595 100644 --- a/internal/lsp/testdata/rename/testy/testy.go.golden +++ b/internal/lsp/testdata/rename/testy/testy.go.golden @@ -1,3 +1,14 @@ +-- bar-d-rename -- +--- rename/testy/testy.go.orig ++++ rename/testy/testy.go +@@ -3,5 +3,5 @@ + type tt int //@rename("tt", "testyType") + + func a() { +- foo := 42 //@rename("foo", "bar") ++ bar := 42 //@rename("foo", "bar") + } + -- bar-rename -- testy.go: package testy @@ -8,16 +19,6 @@ func a() { bar := 42 //@rename("foo", "bar") } --- testyType-rename -- -testy.go: -package testy - -type testyType int //@rename("tt", "testyType") - -func a() { - foo := 42 //@rename("foo", "bar") -} - -- testyType-d-rename -- --- rename/testy/testy.go.orig +++ rename/testy/testy.go @@ -30,14 +31,13 @@ func a() { func a() { foo := 42 //@rename("foo", "bar") --- bar-d-rename -- ---- rename/testy/testy.go.orig -+++ rename/testy/testy.go -@@ -3,5 +3,5 @@ - type tt int //@rename("tt", "testyType") - - func a() { -- foo := 42 //@rename("foo", "bar") -+ bar := 42 //@rename("foo", "bar") - } +-- testyType-rename -- +testy.go: +package testy + +type testyType int //@rename("tt", "testyType") + +func a() { + foo := 42 //@rename("foo", "bar") +} diff --git a/internal/lsp/testdata/rename/testy/testy_test.go.golden b/internal/lsp/testdata/rename/testy/testy_test.go.golden index 6aacd2289a..e5a47a5481 100644 --- a/internal/lsp/testdata/rename/testy/testy_test.go.golden +++ b/internal/lsp/testdata/rename/testy/testy_test.go.golden @@ -1,46 +1,3 @@ --- b-rename -- -testy.go: -package testy - -type tt int //@rename("tt", "testyType") - -func b() { - foo := 42 //@rename("foo", "bar") -} - -testy_test.go: -package testy - -import "testing" - -func TestSomething(t *testing.T) { - var x int //@rename("x", "testyX") - b() //@rename("a", "b") -} - --- testyX-rename -- -testy_test.go: -package testy - -import "testing" - -func TestSomething(t *testing.T) { - var testyX int //@rename("x", "testyX") - a() //@rename("a", "b") -} - --- testyX-d-rename -- ---- rename/testy/testy_test.go.orig -+++ rename/testy/testy_test.go -@@ -3,6 +3,6 @@ - import "testing" - - func TestSomething(t *testing.T) { -- var x int //@rename("x", "testyX") -+ var testyX int //@rename("x", "testyX") - a() //@rename("a", "b") - } - -- b-d-rename -- --- rename/testy/testy.go.orig +++ rename/testy/testy.go @@ -62,3 +19,46 @@ func TestSomething(t *testing.T) { + b() //@rename("a", "b") } +-- b-rename -- +testy.go: +package testy + +type tt int //@rename("tt", "testyType") + +func b() { + foo := 42 //@rename("foo", "bar") +} + +testy_test.go: +package testy + +import "testing" + +func TestSomething(t *testing.T) { + var x int //@rename("x", "testyX") + b() //@rename("a", "b") +} + +-- testyX-d-rename -- +--- rename/testy/testy_test.go.orig ++++ rename/testy/testy_test.go +@@ -3,6 +3,6 @@ + import "testing" + + func TestSomething(t *testing.T) { +- var x int //@rename("x", "testyX") ++ var testyX int //@rename("x", "testyX") + a() //@rename("a", "b") + } + +-- testyX-rename -- +testy_test.go: +package testy + +import "testing" + +func TestSomething(t *testing.T) { + var testyX int //@rename("x", "testyX") + a() //@rename("a", "b") +} + diff --git a/internal/lsp/tests/tests.go b/internal/lsp/tests/tests.go index 0f08e19859..766ddd33e9 100644 --- a/internal/lsp/tests/tests.go +++ b/internal/lsp/tests/tests.go @@ -58,7 +58,7 @@ const ( testModule = "golang.org/x/tools/internal/lsp" ) -var updateGolden = flag.Bool("golden", false, "Update golden files") +var UpdateGolden = flag.Bool("golden", false, "Update golden files") type Diagnostics map[span.URI][]source.Diagnostic type CompletionItems map[token.Pos]*source.CompletionItem @@ -503,7 +503,7 @@ func Run(t *testing.T, tests Tests, data *Data) { tests.Link(t, data.Links) }) - if *updateGolden { + if *UpdateGolden { for _, golden := range data.golden { if !golden.Modified { continue @@ -548,7 +548,7 @@ func (data *Data) Golden(tag string, target string, update func() ([]byte, error } golden := data.golden[fragment] if golden == nil { - if !*updateGolden { + if !*UpdateGolden { data.t.Fatalf("could not find golden file %v: %v", fragment, tag) } golden = &Golden{ @@ -566,7 +566,7 @@ func (data *Data) Golden(tag string, target string, update func() ([]byte, error break } } - if *updateGolden { + if *UpdateGolden { if file == nil { golden.Archive.Files = append(golden.Archive.Files, txtar.File{ Name: tag,