Support local variables for completion and definition requests #1518
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
Support for completion and go to definition for local variables.
Implementation
Basic idea is that we don't have to index all local variables, because they are easy to pull off ad hoc. This way indexing time will stay the same.
Method responsible for locating local variables is
Document#locate_local_variable_nodes
. It returns all nodes that define local variables which are visible in given position.Completion implementation is pretty straightforward. Just take all unique names of all local variables.
Definition jumps to closest definition node, e. g:
Jumping to definition from line 4 jumps to line 3. From line 3 to line 2, etc.
Automated Tests
Added tests for both completion and definition.
Manual Tests
Write simple code like:
You should see completion menu and then jump to definition.