--- /dev/null
+package complit
+
+// general completions
+
+type position struct { //@item(structPosition, "position", "struct{...}", "struct")
+ X, Y int //@item(fieldX, "X", "int", "field"),item(fieldY, "Y", "int", "field")
+}
+
+func _() {
+ _ = position{
+ //@complete("", fieldX, fieldY, structPosition)
+ }
+ _ = position{
+ X: 1,
+ //@complete("", fieldY)
+ }
+ _ = position{
+ //@complete("", fieldX)
+ Y: 1,
+ }
+ _ = []*position{
+ {
+ //@complete("", fieldX, fieldY, structPosition)
+ },
+ }
+}
+
+func _() {
+ var (
+ aa string //@item(aaVar, "aa", "string", "var")
+ ab int //@item(abVar, "ab", "int", "var")
+ )
+
+ _ = map[int]int{
+ a: a, //@complete(":", abVar, aaVar),complete(",", abVar, aaVar)
+ }
+
+ _ = map[int]int{
+ //@complete("", abVar, aaVar, structPosition)
+ }
+
+ _ = []string{a: ""} //@complete(":", abVar, aaVar)
+ _ = [1]string{a: ""} //@complete(":", abVar, aaVar)
+
+ _ = position{X: a} //@complete("}", abVar, aaVar)
+ _ = position{a} //@complete("}", abVar, aaVar)
+ _ = position{a, } //@complete("}", abVar, aaVar, structPosition)
+
+ _ = []int{a} //@complete("}", abVar, aaVar)
+ _ = [1]int{a} //@complete("}", abVar, aaVar)
+
+ type myStruct struct {
+ AA int //@item(fieldAA, "AA", "int", "field")
+ AB string //@item(fieldAB, "AB", "string", "field")
+ }
+
+ _ = myStruct{
+ AB: a, //@complete(",", aaVar, abVar)
+ }
+
+ var s myStruct
+
+ _ = map[int]string{1: "" + s.A} //@complete("}", fieldAB, fieldAA)
+ _ = map[int]string{1: (func(i int) string { return "" })(s.A)} //@complete(")}", fieldAA, fieldAB)
+ _ = map[int]string{1: func() string { s.A }} //@complete(" }", fieldAA, fieldAB)
+
+ _ = position{s.A} //@complete("}", fieldAA, fieldAB)
+
+ var X int //@item(varX, "X", "int", "var")
+ _ = position{X} //@complete("}", fieldX, varX)
+}
+
+func _() {
+ type foo struct{} //@item(complitFoo, "foo", "struct{...}", "struct")
+
+ "&foo" //@item(complitAndFoo, "&foo", "struct{...}", "struct")
+
+ var _ *foo = &fo{} //@rank("{", complitFoo)
+ var _ *foo = fo{} //@rank("{", complitAndFoo)
+
+ struct { a, b *foo }{
+ a: &fo{}, //@rank("{", complitFoo)
+ b: fo{}, //@rank("{", complitAndFoo)
+ }
+}
+
+func _() {
+ _ := position{
+ X: 1, //@complete("X", fieldX),complete(" 1", structPosition)
+ Y: , //@complete(":", fieldY),complete(" ,", structPosition)
+ }
+}