1
0
mirror of https://github.com/golang/go synced 2024-11-19 04:34:39 -07:00
go/internal/lsp/testdata/nested_complit/nested_complit.go.in
Muir Manders 98e333b8b3 internal/lsp: improve completion for *ast.ArrayTypes
*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>
2019-10-23 16:34:50 +00:00

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)
}
}