1package append 2 3func foo([]string) {} 4func bar(...string) {} 5 6func _() { 7 var ( 8 aInt []int //@item(appendInt, "aInt", "[]int", "var") 9 aStrings []string //@item(appendStrings, "aStrings", "[]string", "var") 10 aString string //@item(appendString, "aString", "string", "var") 11 ) 12 13 append(aStrings, a) //@rank(")", appendString, appendInt) 14 var _ interface{} = append(aStrings, a) //@rank(")", appendString, appendInt) 15 var _ []string = append(oops, a) //@rank(")", appendString, appendInt) 16 17 foo(append()) //@rank("))", appendStrings, appendInt),rank("))", appendStrings, appendString) 18 foo(append([]string{}, a)) //@rank("))", appendStrings, appendInt),rank("))", appendString, appendInt),snippet("))", appendStrings, "aStrings...", "aStrings...") 19 foo(append([]string{}, "", a)) //@rank("))", appendString, appendInt),rank("))", appendString, appendStrings) 20 21 // Don't add "..." to append() argument. 22 bar(append()) //@snippet("))", appendStrings, "aStrings", "aStrings") 23 24 type baz struct{} 25 baz{} //@item(appendBazLiteral, "baz{}", "", "var") 26 var bazzes []baz //@item(appendBazzes, "bazzes", "[]baz", "var") 27 var bazzy baz //@item(appendBazzy, "bazzy", "baz", "var") 28 bazzes = append(bazzes, ba) //@rank(")", appendBazzy, appendBazLiteral, appendBazzes) 29 30 var b struct{ b []baz } 31 b.b //@item(appendNestedBaz, "b.b", "[]baz", "field") 32 b.b = append(b.b, b) //@rank(")", appendBazzy, appendBazLiteral, appendNestedBaz) 33 34 var aStringsPtr *[]string //@item(appendStringsPtr, "aStringsPtr", "*[]string", "var") 35 foo(append([]string{}, a)) //@snippet("))", appendStringsPtr, "*aStringsPtr...", "*aStringsPtr...") 36 37 foo(append([]string{}, *a)) //@snippet("))", appendStringsPtr, "aStringsPtr...", "aStringsPtr...") 38} 39