1
0
mirror of https://github.com/golang/go synced 2024-11-18 14:14:46 -07:00
go/internal/lsp/testdata
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
..
indirect internal/lsp: plumb fillstruct through analysis 2020-06-15 21:22:08 +00:00
lsp internal/lsp/source: speed up completion candidate formatting 2020-07-01 04:11:22 +00:00
missingdep internal/lsp: plumb fillstruct through analysis 2020-06-15 21:22:08 +00:00
missingtwodep internal/lsp: plumb fillstruct through analysis 2020-06-15 21:22:08 +00:00
unused internal/lsp: plumb fillstruct through analysis 2020-06-15 21:22:08 +00:00
upgradedep internal/lsp: plumb fillstruct through analysis 2020-06-15 21:22:08 +00:00