1
0
mirror of https://github.com/golang/go synced 2024-11-18 16:14:46 -07:00
go/internal/lsp/testdata
Muir Manders 5ae4576c3a internal/lsp: improve completion after accidental keywords
Sometimes the prefix of the thing you want to complete is a keyword.
For example:

variance := 123
fmt.Println(var<>)

In this case the parser produces an *ast.BadExpr which breaks
completion. We now repair this BadExpr by replacing it with
an *ast.Ident named "var".

We also repair empty decls using a similar approach. This fixes cases
like:

var typeName string
type<> // want to complete to "typeName"

We also fix accidental keywords in selectors, such as:

foo.var<>

The parser produces a phantom "_" in place of the keyword, so we swap
it back for an *ast.Ident named "var".

In general, though, accidental keywords wreak havoc on the AST so we
can only do so much. There are still many cases where a keyword prefix
breaks completion. Perhaps in the future the parser can be
cursor/in-progress-edit aware and turn accidental keywords into
identifiers.

Fixes golang/go#34332.

PS I tweaked nodeContains() to include n.End() to fix a test failure
against tip related to a change to go/parser. When a syntax error is
present, an *ast.BlockStmt's End() is now set to the block's final
statement's End() (earlier than what it used to be). In order for the
cursor pos to test "inside" the block in this case I had to relax the
End() comparison.

Change-Id: Ib45952cf086cc974f1578298df3dd12829344faa
Reviewed-on: https://go-review.googlesource.com/c/tools/+/209438
Run-TryBot: Muir Manders <muir@mnd.rs>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2019-12-03 04:30:02 +00:00
..
analyzer go/analysis: rename reportNodef to ReportRangef 2019-10-28 19:16:33 +00:00
anon internal/lsp: add additional tests for completion 2018-12-19 22:27:14 +00:00
append internal/lsp: improve completion in append() calls 2019-11-09 21:27:01 +00:00
arraytype internal/lsp: improve completion for *ast.ArrayTypes 2019-10-23 16:34:50 +00:00
bad internal/lsp: do not close over the handle in the memoize function 2019-10-30 00:30:36 +00:00
badstmt internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
bar internal/lsp: improve completion for *ast.ArrayTypes 2019-10-23 16:34:50 +00:00
basiclit internal/lsp: suppress more completions in comments and literals 2019-04-24 20:52:08 +00:00
baz internal/lsp: search candidate type's package for completions 2019-10-30 06:26:58 +00:00
builtins internal/lsp: omit "iota" completion outside const decls 2019-09-15 20:16:06 +00:00
casesensitive internal/lsp: provide option for case sensitive completion 2019-09-26 16:59:42 +00:00
cast internal/lsp: add more testdata for completion and diagnostics 2018-11-20 06:06:34 +00:00
cgo internal/lsp/tests: skip cgo tests when not supported 2019-11-25 21:54:41 +00:00
cgoimport internal/lsp: add tests for cgo package users 2019-11-25 19:20:57 +00:00
channel internal/lsp: apply type modifiers to completion candidate 2019-06-19 20:27:14 +00:00
comments internal/lsp: suppress more completions in comments and literals 2019-04-24 20:52:08 +00:00
complit internal/lsp/source: fixes completion for slice literals of pointers 2019-08-30 17:14:47 +00:00
constant internal/lsp: remove constant value from label and add tests 2019-05-15 19:19:14 +00:00
deep internal/lsp: fix variadic interface completion ranking 2019-11-18 05:14:29 +00:00
errors internal/lsp: match completions case-insensitively 2019-06-28 03:43:36 +00:00
fieldlist internal/lsp: improve completions in *ast.FieldList 2019-09-25 22:58:16 +00:00
folding tools/gopls: add cmd support for folding_ranges 2019-11-12 00:55:09 +00:00
foo internal/lsp: fix bad *ast.ArrayTypes for completion 2019-10-17 20:53:01 +00:00
format internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
func_rank internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
funcsig internal/lsp: fix scope of FuncType completion candidates 2019-09-25 19:53:33 +00:00
funcvalue internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
fuzzymatch internal/lsp: reorganize and refactor code 2019-11-21 02:33:28 +00:00
generated internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
godef internal/lsp: fix and re-enable godef tests 2019-11-20 21:51:18 +00:00
good internal/lsp: remove duplicated enums 2019-09-25 15:30:23 +00:00
highlights internal/lsp: add control flow highlighting for functions 2019-12-02 19:01:20 +00:00
implementation internal/lsp: fixes premature return in find implementations 2019-11-26 21:00:16 +00:00
importedcomplit internal/lsp: fix composite literal completion 2019-05-13 22:24:33 +00:00
imports internal/lsp/source: start import diffs at byte 0 2019-11-08 19:30:12 +00:00
index internal/lsp: handle more expected type cases 2019-05-16 16:26:11 +00:00
interfacerank internal/lsp: apply type modifiers to completion candidate 2019-06-19 20:27:14 +00:00
keywords internal/lsp: improve completion after accidental keywords 2019-12-03 04:30:02 +00:00
labels internal/lsp: fix label completion in range and type switch stmts 2019-10-22 21:33:09 +00:00
links internal/lsp: link to the new pkg.go.dev instead of godoc.org 2019-11-30 07:06:09 +00:00
maps internal/lsp: improve completions in *ast.MapType 2019-10-24 19:03:17 +00:00
nested_complit internal/lsp: improve completion for *ast.ArrayTypes 2019-10-23 16:34:50 +00:00
nodisk internal/lsp: fix race condition in metadata handling 2019-11-04 20:35:57 +00:00
noparse internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
noparse_format internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
rank internal/lsp: fix variadic interface completion ranking 2019-11-18 05:14:29 +00:00
references internal/lsp/source: add support for references in the same workspace 2019-11-14 20:04:27 +00:00
rename internal/lsp/testadata/rename: add a test case for renames across packages 2019-11-14 22:24:11 +00:00
selector internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
signature tools/gopls: add cmd support for signature 2019-10-31 22:07:37 +00:00
snippets internal/lsp: fix literal completions in variadic params 2019-11-25 18:03:14 +00:00
suggestedfix internal/lsp: enable suggested fixes by default 2019-09-09 19:40:07 +00:00
symbols tools/gopls: add cmd support for symbols 2019-11-01 17:43:07 +00:00
testy internal/lsp: refactor error handling code in type-checking 2019-10-21 18:57:46 +00:00
typeassert internal/lsp: improve completion support for type assertions 2019-06-26 23:33:08 +00:00
types internal/lsp: add more testdata for completion and diagnostics 2018-11-20 06:06:34 +00:00
unimported internal/lsp: use available type info for unimported completions 2019-11-04 21:31:10 +00:00
unresolved internal/lsp: fix function value completions 2019-06-20 15:43:39 +00:00
unsafe internal/lsp: fix type checking for unsafe package 2019-06-11 19:41:53 +00:00
variadic internal/lsp: fix variadic interface completion ranking 2019-11-18 05:14:29 +00:00
summary.txt.golden internal/lsp: improve completion after accidental keywords 2019-12-03 04:30:02 +00:00