lsp: find-references for fields, methods, and enum variants

Members aren't symbols, so their uses were never recorded. Adds a member-reference list (declaration + uses) tracked during analysis: struct fields/methods and enum variants as declarations; field access, method calls, bare enum literals, qualified Type.variant, and match-arm patterns as uses. Spans are derived from the source-relative name slices; uses carry the owner type (via inferExprType, dereferencing pointers). find-references matches by (owner, name) across loaded documents, treating an unknown owner as a wildcard.

Verified: references for a field (legal_moves), a method (clear_valid_targets), and a variant (promote_rook — decl + comparisons + case patterns + struct-literal values across 5 files).
This commit is contained in:
agra
2026-05-31 12:11:05 +03:00
parent 4f7d4b7725
commit 3437e77938
3 changed files with 104 additions and 2 deletions

View File

@@ -339,6 +339,7 @@ pub const DocumentStore = struct {
}
// Run sema on this file's own AST
analyzer.source = doc.source;
doc.sema = analyzer.analyze(root) catch null;
if (doc.sema != null) {
doc.last_good_sema = doc.sema;