gotools/gopls/internal/test/marker/testdata/completion/interfacerank.txt

This test checks that completion ranking accounts for interface assignability.

-- flags --
-ignore_extra_diags

-- settings.json --
{
	"completeUnimported": false,
	"deepCompletion": false
}

-- p.go --

package interfacerank

type foo interface {
	foo()
}

type fooImpl int

func (*fooImpl) foo() {}

func wantsFoo(foo) {}

func _() {
	var (
		aa string   //@item(irAA, "aa", "string", "var")
		ab *fooImpl //@item(irAB, "ab", "*fooImpl", "var")
	)

	wantsFoo(a) //@complete(")", irAB, irAA)

	var ac fooImpl //@item(irAC, "ac", "fooImpl", "var")
	wantsFoo(&a)   //@complete(")", irAC, irAA, irAB)
}