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)
}