diff options
author | bors <bors@rust-lang.org> | 2022-12-12 14:37:45 +0000 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2022-12-12 14:37:45 +0000 |
commit | 15ff8a5a9fd8d0af2793eaef091700139bba513d (patch) | |
tree | bbe1bad6301c88fcbffc8edb7d806d0aa7080100 /tests/rustdoc-js-std/parser-errors.js | |
parent | e7dff7491a675588a42089fe86009ddf93305e10 (diff) | |
parent | ec268c0d6c240123ca2cb7f5179b483c40dd888d (diff) | |
download | rust-15ff8a5a9fd8d0af2793eaef091700139bba513d.tar.gz |
Auto merge of #13715 - feniljain:fix_completions, r=jonas-schievink
fix: breaking snippets on typed incomplete suggestions
Possible fix for #7929
Fix the case where if a user types `&&42.o`, snippet completion was still applying &&Ok(42). Note this was fixed previously on `&&42.` but this still remained a problem for this case
Previous relevant PR: #13517
### Points to help in review:
- The main problem why everything broke on adding an extra `o` was, earlier `dot_receiver` was `42.` which was a `LITERAL` but now `42.o` becomes a `FIELD_EXPR`
- Till now `include_references` was just checking for parent of `LITERAL` and if it was a `REF_EXPR`, but now we consider `FIELD_EXPR` and traverse all of them, finally to reach `REF_EXPR`. If `REF_EXPR` is not found we just return the original `initial_element`
- We are constructing a new node during `include_references` because if we rely on `dot_receiver` solely we would get `&&42.o` to be replaced with, but we want `&&42` to be replaced with
### Output Video:
https://user-images.githubusercontent.com/49019259/205420166-efbdef78-5b3a-4aef-ab4b-d892dac056a0.mov
Hope everything I wrote makes sense 😅
Also interestingly previous PR's number was `13517` and this PR's number is `13715`, nicee
Diffstat (limited to 'tests/rustdoc-js-std/parser-errors.js')
0 files changed, 0 insertions, 0 deletions