mirror of
https://github.com/golang/go
synced 2024-11-19 03:14:42 -07:00
98e333b8b3
*ast.ArrayTypes are type expressions like "[]foo" or "[2]int". They show up as standalone types (e.g. "var foo []int") and as part of composite literals (e.g. "[]int{}"). I made the following improvements: - Always expect a type name for array types. - Add a "type modifier" for array types so completions can be smart when we know the expected type. For example: var foo []int foo = []i<> we know we want a type name, but we also know the expected type is "[]int". When evaluating type names such as "int" we turn the type into a slice type "[]int" to match against the expected type. - Tweak the AST fixing to add a phantom selector "_" after a naked "[]" so you can complete directly after the right bracket. I split out the type name related type inference bits into a separate typeNameInference struct. It had become confusing and complicated, especially now that you can have an expected type and expect a type name at the same time. Change-Id: I00878532187ee5366ab8d681346532e36fa58e5f Reviewed-on: https://go-review.googlesource.com/c/tools/+/197438 Run-TryBot: Rebecca Stambler <rstambler@golang.org> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
15 lines
329 B
Go
15 lines
329 B
Go
package nested_complit
|
|
|
|
type ncFoo struct {} //@item(structNCFoo, "ncFoo", "struct{...}", "struct")
|
|
|
|
type ncBar struct { //@item(structNCBar, "ncBar", "struct{...}", "struct")
|
|
baz []ncFoo
|
|
}
|
|
|
|
func _() {
|
|
[]ncFoo{} //@item(litNCFoo, "[]ncFoo{}", "", "var")
|
|
_ := ncBar{
|
|
baz: [] //@complete(" //", structNCFoo, structNCBar)
|
|
}
|
|
}
|