package complit

// //@complete(" ", cVar)
var C string //@item(cVar, "C", "string", "var")

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, cVar)
	}
	_ = position{
		X: 1,
		//@complete("", fieldY)
	}
	_ = position{
		//@complete("", fieldX)
		Y: 1,
	}
	_ = []*position{
        {
            //@complete("", fieldX, fieldY, structPosition, cVar)
        },
	}
}

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

	_ = []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, cVar)

	_ = []int{a}  //@complete("a", abVar, aaVar, structPosition, cVar)
	_ = [1]int{a} //@complete("a", abVar, aaVar, structPosition, cVar)

	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 _() {
	_ := position{
		X: 1, //@complete("X", fieldX),complete(" 1", structPosition, cVar)
		Y: ,  //@complete(":", fieldY),complete(" ,", structPosition, cVar)
	}
}
