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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user