1
0
mirror of https://github.com/golang/go synced 2024-10-01 03:28:32 -06:00
go/internal/lsp/source
Muir Manders 7bb885034f internal/lsp/source: fix completion in empty switch statements
Now we properly offer "case" and "default" keyword completion in cases
like:

    switch {
      <>
    }

First I had to add an AST fix for empty switch statements to move the
closing brace down. For example, say the user is completing:

    switch {
    ca<>
    }

This gets parsed as:

    switch {
    }

Even if we manually recover the "ca" token, "<>" is not positioned
inside the switch statement anymore, so we don't know to offer "case"
and "default" candidates. To work around this, we move the closing
brace down one line yielding:

    switch {

    }

Second I had to add logic to manually extract the completion prefix
inside empty switch statements, and finally some logic to offer (only)
"case" and "default" candidates in empty switch statements.

Updates golang/go#34009.

Change-Id: I624f17da1c5e73faf91fe5f69e872d86f1cf5482
Reviewed-on: https://go-review.googlesource.com/c/tools/+/220579
Run-TryBot: Muir Manders <muir@mnd.rs>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-03-11 03:54:16 +00:00
..
comment_test.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
comment.go internal/lsp: convert comments to markdown before sending to client 2019-10-04 18:35:38 +00:00
completion_builtin.go internal/lsp/source: untangle completion type comparison 2020-02-24 18:12:40 +00:00
completion_format.go internal/span,lsp: disambiguate URIs, DocumentURIs, and paths 2020-02-14 22:51:03 +00:00
completion_keywords.go internal/lsp/source: fix completion in empty switch statements 2020-03-11 03:54:16 +00:00
completion_labels.go internal/lsp: sort by label after score 2019-12-30 21:11:21 +00:00
completion_literal.go internal/lsp/source: untangle completion type comparison 2020-02-24 18:12:40 +00:00
completion_snippet.go internal/lsp: merge completion options into source.Options 2020-01-13 20:09:44 +00:00
completion_statements.go internal/lsp/source: offer completion "if err != nil { return err }" 2020-03-10 21:06:53 +00:00
completion.go internal/lsp/source: fix completion in empty switch statements 2020-03-11 03:54:16 +00:00
deep_completion.go internal/lsp/source: improve completion involving multiple return values 2020-02-06 05:07:08 +00:00
diagnostics.go internal/lsp: fix concurrent map read/write for missingmodules 2020-03-03 19:46:16 +00:00
folding_range.go internal/lsp/cache: add file contents to ParseGoHandle 2020-02-13 05:05:14 +00:00
format_test.go internal/lsp/source: trim file very carefully 2020-01-17 20:34:13 +00:00
format.go internal/lsp/source: avoid type checking in AllImportsFixes 2020-03-10 23:10:53 +00:00
highlight.go internal/lsp/cache: add file contents to ParseGoHandle 2020-02-13 05:05:14 +00:00
hover.go internal/lsp/source: return location(s) for imported packages 2020-03-09 16:25:02 +00:00
identifier.go internal/lsp/source: return location(s) for imported packages 2020-03-09 16:25:02 +00:00
implementation.go internal/lsp/source: support inverse "implementations" 2020-03-02 21:28:54 +00:00
options.go internal/lsp: support when hierarchicalDocumentSymbolSupport is false 2020-03-06 18:17:37 +00:00
references.go internal/lsp: don't return references for builtins 2020-02-06 19:49:06 +00:00
rename_check.go internal/lsp: improve literal func completion candidates 2019-11-07 21:18:00 +00:00
rename.go internal/lsp: permit renaming symbols declared in other packages 2020-01-27 18:56:10 +00:00
signature_help.go internal/lsp/source: return location(s) for imported packages 2020-03-09 16:25:02 +00:00
source_test.go internal/lsp/source: return location(s) for imported packages 2020-03-09 16:25:02 +00:00
symbols.go internal/lsp/cache: add file contents to ParseGoHandle 2020-02-13 05:05:14 +00:00
util.go internal/lsp/source: offer completion "if err != nil { return err }" 2020-03-10 21:06:53 +00:00
view.go internal/lsp/cache: include session IDs in some cache keys 2020-03-05 20:50:14 +00:00
workspace_symbol.go internal/lsp/source: use logical filenames for workspace symbols 2020-03-04 19:39:43 +00:00