This test exercises fuzzy completion matching.

-- flags --
-ignore_extra_diags

-- go.mod --
module golang.org/lsptests

go 1.18

-- fuzzy/fuzzy.go --
package fuzzy

func _() {
	var a struct {
		fabar  int
		fooBar string
	}

	a.fabar  //@item(fuzzFabarField, "a.fabar", "int", "field")
	a.fooBar //@item(fuzzFooBarField, "a.fooBar", "string", "field")

	afa //@complete(" //", fuzzFabarField, fuzzFooBarField)
	afb //@complete(" //", fuzzFooBarField, fuzzFabarField)

	fab //@complete(" //", fuzzFabarField)

	var myString string
	myString = af //@complete(" //", fuzzFooBarField, fuzzFabarField)

	var b struct {
		c struct {
			d struct {
				e struct {
					abc string
				}
				abc float32
			}
			abc bool
		}
		abc int
	}

	b.abc       //@item(fuzzABCInt, "b.abc", "int", "field")
	b.c.abc     //@item(fuzzABCbool, "b.c.abc", "bool", "field")
	b.c.d.abc   //@item(fuzzABCfloat, "b.c.d.abc", "float32", "field")
	b.c.d.e.abc //@item(fuzzABCstring, "b.c.d.e.abc", "string", "field")

	// in depth order by default
	abc //@complete(" //", fuzzABCInt, fuzzABCbool, fuzzABCfloat)

	// deep candidate that matches expected type should still ranked first
	var s string
	s = abc //@complete(" //", fuzzABCstring, fuzzABCInt, fuzzABCbool)
}
