1
0
mirror of https://github.com/golang/go synced 2024-09-30 22:38:33 -06:00
go/internal/lsp/source
Muir Manders 1837592efa internal/lsp/source: speed up completion candidate formatting
Completion could be slow due to calls to astutil.PathEnclosingInterval
for every candidate during formatting. There were two reasons we
called PEI:

1. To properly render type alias names, we must refer to the AST
   because the alias name is not available in the typed world.
   Previously we would call PEI to find the *type.Var's
   corresponding *ast.Field, but now we have a PosToField cache that
   lets us jump straight from the types.Object's token.Pos to the
   corresponding *ast.Field.

2. To display an object's documentation we must refer to the AST. We
   need the object's declaring node and any containing ast.Decl. We
   now maintain a special PosToDecl cache so we can avoid the PEI call
   in this case as well.

We can't use a single cache for both because the *ast.Field's position
is present in both caches (but points to different nodes). The caches
are memoized to defer generation until they are needed and to save
work creating them if the *ast.Files haven't changed.

These changes speed up completing the fields of
github.com/aws/aws-sdk-go/service/ec2 from 18.5s to 45ms on my laptop.

Fixes golang/go#37450.

Change-Id: I25cc5ea39551db728a2348f346342ebebeddd049
Reviewed-on: https://go-review.googlesource.com/c/tools/+/221021
Run-TryBot: Muir Manders <muir@mnd.rs>
Reviewed-by: Rebecca Stambler <rstambler@golang.org>
2020-07-01 04:11:22 +00:00
..
code_lens.go internal/lsp/source: fix panic in test code lens 2020-06-24 22:30:20 +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: fix errors found by staticcheck 2020-03-19 19:20:54 +00:00
completion_builtin.go internal/lsp: remove Ignore feature 2020-06-11 22:55:14 +00:00
completion_format.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
completion_keywords.go internal/lsp/source: offer loop keyword completions in range stmt 2020-03-12 04:57:24 +00:00
completion_labels.go internal/lsp: use one context throughout completion 2020-04-06 16:51:37 +00:00
completion_literal.go internal/telemetry: renaming to internal/event 2020-04-23 17:20:48 +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 smart "append()" completions 2020-05-20 22:05:37 +00:00
completion.go internal/lsp: read files eagerly 2020-06-11 22:11:59 +00:00
deep_completion.go internal/lsp: use one context throughout completion 2020-04-06 16:51:37 +00:00
diagnostics.go internal/lsp/cache: fix ignored file check 2020-06-22 19:29:24 +00:00
folding_range.go internal/lsp: read files eagerly 2020-06-11 22:11:59 +00:00
format_test.go internal/lsp: fix new bug duplicating comments after includes 2020-05-19 20:57:26 +00:00
format.go internal/lsp: cancel the initial workspace load when view shuts down 2020-06-12 18:06:40 +00:00
highlight.go internal/lsp/source: support highlight of switch statements 2020-06-19 02:36:21 +00:00
hover.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
identifier.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
implementation.go internal/lsp: read files eagerly 2020-06-11 22:11:59 +00:00
options.go internal/lsp/source: add a new symbolStyle configuration option 2020-06-26 17:13:37 +00:00
references.go internal/event: renaming the main event API functions 2020-04-23 17:21:36 +00:00
rename_check.go internal/lsp/source: avoid panic in rename check 2020-06-16 19:50:46 +00:00
rename.go internal/lsp: read files eagerly 2020-06-11 22:11:59 +00:00
signature_help.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
source_test.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
symbols.go internal/lsp: use %w in error wrappers 2020-05-04 14:52:14 +00:00
types_format.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
util.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
view.go internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
workspace_symbol.go internal/lsp/source: add a new symbolStyle configuration option 2020-06-26 17:13:37 +00:00