blob: 7a7275784297cdab837dc840617e887a1eff993a [file] [log] [blame]
This test checks basic completion snippet support.
-- flags --
-ignore_extra_diags
-- go.mod --
module golang.org/lsptests/snippet
-- snippet.go --
package snippets
// Pre-set this marker, as we don't have a "source" for it in this package.
// The comment is used to create a synthetic completion item.
//
// TODO(rfindley): allow completion markers to refer to ad-hoc items inline,
// without this trick.
/* Error() */ //@item(Error, "Error", "func() string", "method")
type AliasType = int //@item(sigAliasType, "AliasType", "AliasType", "type")
func foo(i int, b bool) {} //@item(snipFoo, "foo", "func(i int, b bool)", "func")
func bar(fn func()) func() {} //@item(snipBar, "bar", "func(fn func())", "func")
func baz(at AliasType, b bool) {} //@item(snipBaz, "baz", "func(at AliasType, b bool)", "func")
type Foo struct {
Bar int //@item(snipFieldBar, "Bar", "int", "field")
Func func(at AliasType) error //@item(snipFieldFunc, "Func", "func(at AliasType) error", "field")
}
func (Foo) Baz() func() {} //@item(snipMethodBaz, "Baz", "func() func()", "method")
func (Foo) BazBar() func() {} //@item(snipMethodBazBar, "BazBar", "func() func()", "method")
func (Foo) BazBaz(at AliasType) func() {} //@item(snipMethodBazBaz, "BazBaz", "func(at AliasType) func()", "method")
func _() {
f //@snippet(re"() \\/\\/", snipFoo, "foo(${1:})")
bar //@snippet(re"() \\/\\/", snipBar, "bar(${1:})")
baz() //@snippet(re"()\\(", snipBaz, "baz")
bar(nil) //@snippet(re"()\\(", snipBar, "bar")
bar(ba) //@snippet(re"()\\)", snipBar, "bar(${1:})")
var f Foo
bar(f.Ba) //@snippet(re"()\\)", snipMethodBaz, "Baz()")
(bar)(nil) //@snippet(re"()\\)", snipBar, "bar(${1:})")
(f.Ba)() //@snippet(re"()\\)", snipMethodBaz, "Baz()")
Foo{
B //@snippet(re"() \\/\\/", snipFieldBar, "Bar: ${1:},")
}
Foo{
F //@snippet(re"() \\/\\/", snipFieldFunc, "Func: ${1:},")
}
Foo{B} //@snippet(re"()}", snipFieldBar, "Bar: ${1:}")
Foo{} //@snippet(re"()}", snipFieldBar, "Bar: ${1:}")
Foo{Foo{}.B} //@snippet(re"()} ", snipFieldBar, "Bar")
var err error
err.Error() //@snippet(re"()E", Error, "Error()")
f.Baz() //@snippet(re"()B", snipMethodBaz, "Baz()")
f.Baz() //@snippet(re"()\\(", snipMethodBazBar, "BazBar")
f.Baz() //@snippet(re"()B", snipMethodBazBaz, "BazBaz(${1:})")
}
func _() {
type bar struct {
a int
b float64 //@item(snipBarB, "b", "float64")
}
bar{b} //@snippet(re"()}", snipBarB, "b: ${1:}")
}