aboutsummaryrefslogtreecommitdiff
path: root/gopls/internal/lsp/testdata/func_rank/func_rank.go.in
diff options
context:
space:
mode:
Diffstat (limited to 'gopls/internal/lsp/testdata/func_rank/func_rank.go.in')
-rw-r--r--gopls/internal/lsp/testdata/func_rank/func_rank.go.in70
1 files changed, 70 insertions, 0 deletions
diff --git a/gopls/internal/lsp/testdata/func_rank/func_rank.go.in b/gopls/internal/lsp/testdata/func_rank/func_rank.go.in
new file mode 100644
index 000000000..905010b3d
--- /dev/null
+++ b/gopls/internal/lsp/testdata/func_rank/func_rank.go.in
@@ -0,0 +1,70 @@
+package func_rank
+
+import "net/http"
+
+var stringAVar = "var" //@item(stringAVar, "stringAVar", "string", "var")
+func stringBFunc() string { return "str" } //@item(stringBFunc, "stringBFunc", "func() string", "func")
+type stringer struct{} //@item(stringer, "stringer", "struct{...}", "struct")
+
+func _() stringer //@complete("tr", stringer)
+
+func _(val stringer) {} //@complete("tr", stringer)
+
+func (stringer) _() {} //@complete("tr", stringer)
+
+func _() {
+ var s struct {
+ AA int //@item(rankAA, "AA", "int", "field")
+ AB string //@item(rankAB, "AB", "string", "field")
+ AC int //@item(rankAC, "AC", "int", "field")
+ }
+ fnStr := func(string) {}
+ fnStr(s.A) //@complete(")", rankAB, rankAA, rankAC)
+ fnStr("" + s.A) //@complete(")", rankAB, rankAA, rankAC)
+
+ fnInt := func(int) {}
+ fnInt(-s.A) //@complete(")", rankAA, rankAC, rankAB)
+
+ // no expected type
+ fnInt(func() int { s.A }) //@complete(" }", rankAA, rankAB, rankAC)
+ fnInt(s.A()) //@complete("()", rankAA, rankAC, rankAB)
+ fnInt([]int{}[s.A]) //@complete("])", rankAA, rankAC, rankAB)
+ fnInt([]int{}[:s.A]) //@complete("])", rankAA, rankAC, rankAB)
+
+ fnInt(s.A.(int)) //@complete(".(", rankAA, rankAC, rankAB)
+
+ fnPtr := func(*string) {}
+ fnPtr(&s.A) //@complete(")", rankAB, rankAA, rankAC)
+
+ var aaPtr *string //@item(rankAAPtr, "aaPtr", "*string", "var")
+ var abPtr *int //@item(rankABPtr, "abPtr", "*int", "var")
+ fnInt(*a) //@complete(")", rankABPtr, rankAAPtr)
+
+ _ = func() string {
+ return s.A //@complete(" //", rankAB, rankAA, rankAC)
+ }
+}
+
+type foo struct {
+ fooPrivateField int //@item(rankFooPrivField, "fooPrivateField", "int", "field")
+ FooPublicField int //@item(rankFooPubField, "FooPublicField", "int", "field")
+}
+
+func (foo) fooPrivateMethod() int { //@item(rankFooPrivMeth, "fooPrivateMethod", "func() int", "method")
+ return 0
+}
+
+func (foo) FooPublicMethod() int { //@item(rankFooPubMeth, "FooPublicMethod", "func() int", "method")
+ return 0
+}
+
+func _() {
+ var _ int = foo{}. //@rank(" //", rankFooPrivField, rankFooPubField),rank(" //", rankFooPrivMeth, rankFooPubMeth),rank(" //", rankFooPrivField, rankFooPrivMeth)
+}
+
+func _() {
+ HandleFunc //@item(httpHandleFunc, "HandleFunc", "func(pattern string, handler func(http.ResponseWriter, *http.Request))", "func")
+ HandlerFunc //@item(httpHandlerFunc, "HandlerFunc", "func(http.ResponseWriter, *http.Request)", "type")
+
+ http.HandleFunc //@rank(" //", httpHandleFunc, httpHandlerFunc)
+}