| This test checks completion related to composite literals. |
| |
| -- flags -- |
| -ignore_extra_diags |
| |
| -- settings.json -- |
| { |
| "completeUnimported": false |
| } |
| |
| -- complit.go -- |
| package complit |
| |
| // Literal completion results. |
| /* int() */ //@item(int, "int()", "int", "var") |
| |
| // 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, int, structPosition) |
| } |
| _ = position{ |
| X: 1, |
| //@complete("", fieldY) |
| } |
| _ = position{ |
| //@complete("", fieldX) |
| Y: 1, |
| } |
| _ = []*position{ |
| { |
| //@complete("", fieldX, fieldY, int, 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, int, 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, int, 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") |
| |
| var _ *foo = &fo{} //@snippet("{", complitFoo, "foo") |
| var _ *foo = fo{} //@snippet("{", complitFoo, "&foo") |
| |
| struct { a, b *foo }{ |
| a: &fo{}, //@rank("{", complitFoo) |
| b: fo{}, //@snippet("{", complitFoo, "&foo") |
| } |
| } |
| |
| func _() { |
| _ := position{ |
| X: 1, //@complete("X", fieldX),complete(" 1", int, structPosition) |
| Y: , //@complete(":", fieldY),complete(" ,", int, structPosition) |
| } |
| } |