gopls/internal/regtest/marker: port statements completion tests

For golang/go#54845

Change-Id: I2257cac9ac7d08bffd4ba90eec4dcb5b750fcc44
Reviewed-on: https://go-review.googlesource.com/c/tools/+/537738
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alan Donovan <adonovan@google.com>
diff --git a/gopls/internal/lsp/testdata/statements/append.go b/gopls/internal/lsp/testdata/statements/append.go
deleted file mode 100644
index 0eea85a..0000000
--- a/gopls/internal/lsp/testdata/statements/append.go
+++ /dev/null
@@ -1,42 +0,0 @@
-package statements
-
-func _() {
-	type mySlice []int
-
-	var (
-		abc    []int   //@item(stmtABC, "abc", "[]int", "var")
-		abcdef mySlice //@item(stmtABCDEF, "abcdef", "mySlice", "var")
-	)
-
-	/* abcdef = append(abcdef, ) */ //@item(stmtABCDEFAssignAppend, "abcdef = append(abcdef, )", "", "func")
-
-	// don't offer "abc = append(abc, )" because "abc" isn't necessarily
-	// better than "abcdef".
-	abc //@complete(" //", stmtABC, stmtABCDEF)
-
-	abcdef //@complete(" //", stmtABCDEF, stmtABCDEFAssignAppend)
-
-	/* append(abc, ) */ //@item(stmtABCAppend, "append(abc, )", "", "func")
-
-	abc = app //@snippet(" //", stmtABCAppend, "append(abc, ${1:})", "append(abc, ${1:})")
-}
-
-func _() {
-	var s struct{ xyz []int }
-
-	/* xyz = append(s.xyz, ) */ //@item(stmtXYZAppend, "xyz = append(s.xyz, )", "", "func")
-
-	s.x //@snippet(" //", stmtXYZAppend, "xyz = append(s.xyz, ${1:})", "xyz = append(s.xyz, ${1:})")
-
-	/* s.xyz = append(s.xyz, ) */ //@item(stmtDeepXYZAppend, "s.xyz = append(s.xyz, )", "", "func")
-
-	sx //@snippet(" //", stmtDeepXYZAppend, "s.xyz = append(s.xyz, ${1:})", "s.xyz = append(s.xyz, ${1:})")
-}
-
-func _() {
-	var foo [][]int
-
-	/* append(foo[0], ) */ //@item(stmtFooAppend, "append(foo[0], )", "", "func")
-
-	foo[0] = app //@complete(" //"),snippet(" //", stmtFooAppend, "append(foo[0], ${1:})", "append(foo[0], ${1:})")
-}
diff --git a/gopls/internal/lsp/testdata/statements/if_err_check_return.go b/gopls/internal/lsp/testdata/statements/if_err_check_return.go
deleted file mode 100644
index e82b783..0000000
--- a/gopls/internal/lsp/testdata/statements/if_err_check_return.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package statements
-
-import (
-	"bytes"
-	"io"
-	"os"
-)
-
-func one() (int, float32, io.Writer, *int, []int, bytes.Buffer, error) {
-	/* if err != nil { return err } */ //@item(stmtOneIfErrReturn, "if err != nil { return err }", "", "")
-	/* err != nil { return err } */ //@item(stmtOneErrReturn, "err != nil { return err }", "", "")
-
-	_, err := os.Open("foo")
-	//@snippet("", stmtOneIfErrReturn, "", "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
-
-	_, err = os.Open("foo")
-	i //@snippet(" //", stmtOneIfErrReturn, "", "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
-
-	_, err = os.Open("foo")
-	if er //@snippet(" //", stmtOneErrReturn, "", "err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
-
-	_, err = os.Open("foo")
-	if //@snippet(" //", stmtOneIfErrReturn, "", "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
-
-	_, err = os.Open("foo")
-	if //@snippet("//", stmtOneIfErrReturn, "", "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
-}
diff --git a/gopls/internal/lsp/testdata/statements/if_err_check_return_2.go b/gopls/internal/lsp/testdata/statements/if_err_check_return_2.go
deleted file mode 100644
index e2dce80..0000000
--- a/gopls/internal/lsp/testdata/statements/if_err_check_return_2.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package statements
-
-import "os"
-
-func two() error {
-	var s struct{ err error }
-
-	/* if s.err != nil { return s.err } */ //@item(stmtTwoIfErrReturn, "if s.err != nil { return s.err }", "", "")
-
-	_, s.err = os.Open("foo")
-	//@snippet("", stmtTwoIfErrReturn, "", "if s.err != nil {\n\treturn ${1:s.err}\n\\}")
-}
diff --git a/gopls/internal/lsp/testdata/statements/if_err_check_test.go b/gopls/internal/lsp/testdata/statements/if_err_check_test.go
deleted file mode 100644
index 6de5878..0000000
--- a/gopls/internal/lsp/testdata/statements/if_err_check_test.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package statements
-
-import (
-	"os"
-	"testing"
-)
-
-func TestErr(t *testing.T) {
-	/* if err != nil { t.Fatal(err) } */ //@item(stmtOneIfErrTFatal, "if err != nil { t.Fatal(err) }", "", "")
-
-	_, err := os.Open("foo")
-	//@snippet("", stmtOneIfErrTFatal, "", "if err != nil {\n\tt.Fatal(err)\n\\}")
-}
-
-func BenchmarkErr(b *testing.B) {
-	/* if err != nil { b.Fatal(err) } */ //@item(stmtOneIfErrBFatal, "if err != nil { b.Fatal(err) }", "", "")
-
-	_, err := os.Open("foo")
-	//@snippet("", stmtOneIfErrBFatal, "", "if err != nil {\n\tb.Fatal(err)\n\\}")
-}
diff --git a/gopls/internal/lsp/testdata/summary.txt.golden b/gopls/internal/lsp/testdata/summary.txt.golden
index 58a709d..2681ab2 100644
--- a/gopls/internal/lsp/testdata/summary.txt.golden
+++ b/gopls/internal/lsp/testdata/summary.txt.golden
@@ -1,7 +1,7 @@
 -- summary --
 CallHierarchyCount = 2
-CompletionsCount = 181
-CompletionSnippetCount = 53
+CompletionsCount = 178
+CompletionSnippetCount = 41
 DeepCompletionsCount = 5
 FuzzyCompletionsCount = 8
 RankedCompletionsCount = 163
diff --git a/gopls/internal/regtest/marker/testdata/completion/statements.txt b/gopls/internal/regtest/marker/testdata/completion/statements.txt
new file mode 100644
index 0000000..d013fef
--- /dev/null
+++ b/gopls/internal/regtest/marker/testdata/completion/statements.txt
@@ -0,0 +1,121 @@
+This test exercises completion around various statements.
+
+-- flags --
+-ignore_extra_diags
+
+-- settings.json --
+{
+	"usePlaceholders": true
+}
+
+-- go.mod --
+module golang.org/lsptests/statements
+
+-- append.go --
+package statements
+
+func _() {
+	type mySlice []int
+
+	var (
+		abc    []int   //@item(stmtABC, "abc", "[]int", "var")
+		abcdef mySlice //@item(stmtABCDEF, "abcdef", "mySlice", "var")
+	)
+
+	/* abcdef = append(abcdef, ) */ //@item(stmtABCDEFAssignAppend, "abcdef = append(abcdef, )", "", "func")
+
+	// don't offer "abc = append(abc, )" because "abc" isn't necessarily
+	// better than "abcdef".
+	abc //@complete(" //", stmtABC, stmtABCDEF)
+
+	abcdef //@complete(" //", stmtABCDEF, stmtABCDEFAssignAppend)
+
+	/* append(abc, ) */ //@item(stmtABCAppend, "append(abc, )", "", "func")
+
+	abc = app //@snippet(" //", stmtABCAppend, "append(abc, ${1:})")
+}
+
+func _() {
+	var s struct{ xyz []int }
+
+	/* xyz = append(s.xyz, ) */ //@item(stmtXYZAppend, "xyz = append(s.xyz, )", "", "func")
+
+	s.x //@snippet(" //", stmtXYZAppend, "xyz = append(s.xyz, ${1:})")
+
+	/* s.xyz = append(s.xyz, ) */ //@item(stmtDeepXYZAppend, "s.xyz = append(s.xyz, )", "", "func")
+
+	sx //@snippet(" //", stmtDeepXYZAppend, "s.xyz = append(s.xyz, ${1:})")
+}
+
+func _() {
+	var foo [][]int
+
+	/* append(foo[0], ) */ //@item(stmtFooAppend, "append(foo[0], )", "", "func")
+
+	foo[0] = app //@complete(" //", stmtFooAppend),snippet(" //", stmtFooAppend, "append(foo[0], ${1:})")
+}
+
+-- if_err_check_return.go --
+package statements
+
+import (
+	"bytes"
+	"io"
+	"os"
+)
+
+func one() (int, float32, io.Writer, *int, []int, bytes.Buffer, error) {
+	/* if err != nil { return err } */ //@item(stmtOneIfErrReturn, "if err != nil { return err }", "", "")
+	/* err != nil { return err } */ //@item(stmtOneErrReturn, "err != nil { return err }", "", "")
+
+	_, err := os.Open("foo")
+	//@snippet("", stmtOneIfErrReturn, "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
+
+	_, err = os.Open("foo")
+	i //@snippet(" //", stmtOneIfErrReturn, "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
+
+	_, err = os.Open("foo")
+	if er //@snippet(" //", stmtOneErrReturn, "err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
+
+	_, err = os.Open("foo")
+	if //@snippet(" //", stmtOneIfErrReturn, "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
+
+	_, err = os.Open("foo")
+	if //@snippet("//", stmtOneIfErrReturn, "if err != nil {\n\treturn 0, 0, nil, nil, nil, bytes.Buffer{\\}, ${1:err}\n\\}")
+}
+
+-- if_err_check_return2.go --
+package statements
+
+import "os"
+
+func two() error {
+	var s struct{ err error }
+
+	/* if s.err != nil { return s.err } */ //@item(stmtTwoIfErrReturn, "if s.err != nil { return s.err }", "", "")
+
+	_, s.err = os.Open("foo")
+	//@snippet("", stmtTwoIfErrReturn, "if s.err != nil {\n\treturn ${1:s.err}\n\\}")
+}
+
+-- if_err_check_test.go --
+package statements
+
+import (
+	"os"
+	"testing"
+)
+
+func TestErr(t *testing.T) {
+	/* if err != nil { t.Fatal(err) } */ //@item(stmtOneIfErrTFatal, "if err != nil { t.Fatal(err) }", "", "")
+
+	_, err := os.Open("foo")
+	//@snippet("", stmtOneIfErrTFatal, "if err != nil {\n\tt.Fatal(err)\n\\}")
+}
+
+func BenchmarkErr(b *testing.B) {
+	/* if err != nil { b.Fatal(err) } */ //@item(stmtOneIfErrBFatal, "if err != nil { b.Fatal(err) }", "", "")
+
+	_, err := os.Open("foo")
+	//@snippet("", stmtOneIfErrBFatal, "if err != nil {\n\tb.Fatal(err)\n\\}")
+}