mirror of
https://github.com/golang/go
synced 2024-11-19 10:04:56 -07:00
97ad0ed331
Add a special case for append() arguments so we infer the expected type from the append() context. For example: var foo []int foo = append(<>) We now infer the expected type at <> to be []int. We also support the variadicity of append(). Change-Id: Ie0ef0007907fcb7992f9697cb90970ce4d9a66b8 Reviewed-on: https://go-review.googlesource.com/c/tools/+/205606 Run-TryBot: Rebecca Stambler <rstambler@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
20 lines
777 B
Go
20 lines
777 B
Go
package append
|
|
|
|
func foo([]string) {}
|
|
func bar(...string) {}
|
|
|
|
func _() {
|
|
var (
|
|
aInt []int //@item(appendInt, "aInt", "[]int", "var")
|
|
aStrings []string //@item(appendStrings, "aStrings", "[]string", "var")
|
|
aString string //@item(appendString, "aString", "string", "var")
|
|
)
|
|
|
|
foo(append()) //@rank("))", appendStrings, appendInt),rank("))", appendStrings, appendString)
|
|
foo(append(nil, a)) //@rank("))", appendStrings, appendInt),rank("))", appendString, appendInt),snippet("))", appendStrings, "aStrings...", "aStrings...")
|
|
foo(append(nil, "", a)) //@rank("))", appendString, appendInt),rank("))", appendString, appendStrings)
|
|
|
|
// Don't add "..." to append() argument.
|
|
bar(append()) //@snippet("))", appendStrings, "aStrings", "aStrings")
|
|
}
|