github.com/powerman/golang-tools@v0.1.11-0.20220410185822-5ad214d8d803/internal/lsp/testdata/append/append.go (about)

     1  package append
     2  
     3  func foo([]string)  {}
     4  func bar(...string) {}
     5  
     6  func _() {
     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  }