1
0
mirror of https://github.com/golang/go synced 2024-11-18 16:14:46 -07:00
go/internal/lsp/testdata
Muir Manders dc339cc7c5 internal/lsp: improve completions in go and defer statements
Improve the existing fix-the-AST code to better identify the
expression following the "go" or "defer" keywords:

- Don't slurp the expression start outside the loop since the
  expression might only have a single token.
- Set expression end to the position after the final token, not the
  position of the final token.
- Track curly brace nesting to properly capture an entire "func() {}"
  expression.
- Fix parent node detection to work when BadStmt isn't first statement
  of block.
- Add special case to detect dangling period, e.g. "defer fmt.". We
  insert phantom "_" selectors like go/parser does to prevent the
  dangling "." from messing up the AST.
- Use reflect in offsetPositions so it updates positions in all node
  types. This code shouldn't be called often, so I don't think
  performance is a concern.

I also tweaked the function snippet code so it properly expands
"defer" and "go" expressions to function calls. It thought it didn't
have to expand since there was already a *ast.CallExpr, but the
CallExpr was faked by us and the source doesn't actually contain the
"()" calling parens.

Note that this does not work for nested go/defer statements. For
example, completions won't work properly in cases like this:

go func() {
  defer fmt.<>
}

I think we can fix this as well with some more work.

Change-Id: I8f9753fda76909b0e3a83489cdea69ad04ee237a
Reviewed-on: https://go-review.googlesource.com/c/tools/+/193997
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
Run-TryBot: Rebecca Stambler <rstambler@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
2019-09-09 19:09:43 +00:00
..
analyzer internal/lsp: fix badly formatted error messages from go vet 2019-04-16 19:41:54 +00:00
anon internal/lsp: add additional tests for completion 2018-12-19 22:27:14 +00:00
bad internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
badstmt internal/lsp: improve completions in go and defer statements 2019-09-09 19:09:43 +00:00
bar internal/lsp: fix documentation for completion items 2019-08-12 17:13:29 +00:00
basiclit internal/lsp: suppress more completions in comments and literals 2019-04-24 20:52:08 +00:00
baz internal/lsp: suppress more completions in comments and literals 2019-04-24 20:52:08 +00:00
builtins internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
cast internal/lsp: add more testdata for completion and diagnostics 2018-11-20 06:06:34 +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
deepcomplete internal/lsp: enable deep completion and fuzzy matching by default 2019-08-30 16:47:54 +00:00
errors internal/lsp: match completions case-insensitively 2019-06-28 03:43:36 +00:00
folding internal/lsp: fold contained lines when lineFoldingOnly 2019-09-05 23:56:50 +00:00
foo internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
format internal/lsp: switch golden files to use txtar 2019-05-08 14:59:27 +00:00
func_rank internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
funcvalue internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
generated internal/lsp: show "do not edit" message when user opens generated file 2019-08-07 16:44:42 +00:00
godef internal/lsp: use the explicit import spec name as ident 2019-08-22 17:46:33 +00:00
good internal/lsp: add prepare rename support 2019-08-29 20:19:46 +00:00
highlights internal/lsp: add support for document highlight 2019-03-26 19:08:20 +00:00
importedcomplit internal/lsp: fix composite literal completion 2019-05-13 22:24:33 +00:00
imports internal/lsp: add some basic tests for imports 2019-06-03 23:13:51 +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
links internal/lsp: add links search in comments and string literals 2019-07-12 18:53:41 +00:00
nested_complit internal/lsp: improve composite literal completion 2019-04-23 22:28:03 +00:00
nodisk internal/lsp/testdata: delete nodisk/newdisk_exists.go 2019-08-06 20:59:09 +00:00
noparse internal/lsp: connect basic analysis functionality 2019-02-06 21:48:25 +00:00
noparse_format internal/lsp: format files in packages with errors 2019-07-26 23:07:22 +00:00
rank internal/lsp: improve completion support for untyped constants 2019-07-03 16:30:32 +00:00
references internal/lsp: fix declarations in references 2019-09-05 03:51:44 +00:00
rename internal/lsp: support renaming of import spec 2019-08-23 17:09:09 +00:00
selector internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
signature internal/lsp: hide signature help in function literals 2019-07-02 15:22:45 +00:00
snippets internal/lsp: move function signature into detail instead of label 2019-07-03 21:07:46 +00:00
symbols internal/lsp: make interface methods children of the interface symbol 2019-04-24 02:46:01 +00:00
testy internal/lsp: move function signature into detail instead of label 2019-07-03 21:07: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: add completions of unimported std lib pkgs 2019-08-16 18:32:40 +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