SCIP: Emit references for symbols referenced in macro-expansion#22605
Open
Wilfred wants to merge 2 commits into
Open
SCIP: Emit references for symbols referenced in macro-expansion#22605Wilfred wants to merge 2 commits into
Wilfred wants to merge 2 commits into
Conversation
Trivial change that causes a bunch of reindentation, makes the next commit simpler.
Previously, we only emitted references from source tokens. This causes
issues with find-references tools built on top of SCIP. For example,
the following code would produce a SCIP index with no references to
`greeting`.
use askama::Template;
#[derive(Template)]
#[template(source = "{{ crate::greeting() }}", ext = "txt")]
struct Page;
fn greeting() -> &'static str {
"hello from askama"
}
Instead, walk macro-expanded tokens and emit SCIP references with the
Generated role.
Whilst this is strictly more work, SCIP generation time increased by
less than 10% when testing on the crates inside rust-analyzer.
AI disclosure: Partially written by Codex and GPT-5.5.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Previously, we only emitted references from source tokens. This causes issues with find-references tools built on top of SCIP. For example, the following code would produce a SCIP index with no references to
greeting.Instead, walk macro-expanded tokens and emit SCIP references with the Generated role.
Whilst this is strictly more work, SCIP generation time increased by less than 10% when testing on the crates inside rust-analyzer.
(I've split out a commit that reindents the closure a bunch, to hopefully make the actual logic changes easier to read.)
AI disclosure: Partially written by Codex and GPT-5.5.