You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For `references`, `callers`, and `callees`, an explicit `--snippet-lines` is valid only with `--body` and text or JSON result output. Location-only formats and `--count` reject the option before opening the database so a requested snippet length is never silently ignored or recorded in replay/query context without being applied. Explicitness comes from the argument parser, so option-like literals passed through `--query` or after `--` remain queries. Bounded JSON projection also removes the snippet-only control from its internal count replay, preserving clean stderr, total counts, and cursors for visible body excerpts.
2519
2528
2529
+
Bounded `--fields` output is a generic JSON projection contract and can be combined only with `--format json` or `--format compact`; projection-incompatible formats such as CSV, TSV, quickfix, LSP, and SARIF are rejected with `E010_USAGE_ERROR` before the database is opened. For `references`, `callers`, and `callees`, a collection-bearing zero-result document is unwrapped authoritatively so an empty collection remains empty and its result, returned, and total counts remain zero. Selecting `body` or `body_content` automatically retains the companion start/end, requested/effective range, truncation flag/reasons, next-start, omission, and recovery fields. A byte budget omits the whole row or returns `E028_RESPONSE_BUDGET_TOO_SMALL` rather than stripping those companion fields.
2530
+
2520
2531
Graph body mode keeps the established `body_*` definition/container excerpt and adds an independent `callsite_*` excerpt for `references`, `callers`, `callees`, and graph-backed `impact` rows. The call-site window is read from indexed source and centered on the deterministic `first_reference`: grouped rows choose the lowest source position, while an individual reference selects itself. `callsite_line`, available persisted `callsite_column` / `callsite_length`, `callsite_selection`, `callsite_reference_count`, and `callsite_omitted_reference_count` make that choice explicit; legacy rows omit a coordinate or span that was not indexed. The content/range fields mirror the body contract through requested/effective ranges, `line_width_cap` and other truncation reasons, redacted recovery metadata, and `callsite_content_unavailable_reason` when the exact focus line cannot be reconstructed from indexed chunks. A bounded projection containing only `callsite_*` fields still materializes body mode; a projection containing neither `body_*` nor `callsite_*` skips it. Existing output without `--body` remains unchanged.
2521
2532
2522
2533
`ReferenceResult` includes `is_self_reference` and `is_mutual_recursion`; `CallerResult` includes `has_self_reference` and `has_mutual_recursion`. These fields identify self-recursive edges and direct two-symbol cycles without removing valid recursive calls from default graph results. Reader APIs that need a non-recursive view can opt into self-reference exclusion.
Copy file name to clipboardExpand all lines: TESTING_GUIDE.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -115,7 +115,7 @@ Candidate-ordered parallel-index recovery tests must prove that the fatal result
115
115
YAML sequence-hierarchy fixtures must keep sequence items path-only, count empty/scalar/alias items in stable indexes, preserve anchor and block-scalar boundaries, assert logical qualified paths separately from nearest emitted symbol parents, and prove a normal full scan refreshes unchanged YAML rows stamped with the prior extractor contract.
116
116
C# declaration-boundary regressions should pair a direct extractor fixture with a real-index `symbols --exact-name` query. Keep invocation and parameter continuations beside valid multi-line methods, constructors, delegates, and local functions so both false-positive rejection and declaration ranges remain observable. Scope-continuation fixtures must also place unmatched delimiters in character/string literals and comments before later methods, then assert that the later methods remain definitions rather than unresolved declaration-shaped calls.
117
117
C# explicit-interface identity coverage pairs extractor assertions for methods, properties, events, and indexers with persisted exact qualified/unqualified queries, fold rewrite validation, inspect/outline checks, and LSP definition/reference scoping. Include multiple and inherited interfaces, generic arity, a same-named public member, and a qualified return type that must not be mistaken for an explicit-interface qualifier.
118
-
C# callable-containment fixtures should cover block-bodied test methods, local and nested local functions, named lambdas, expression-bodied members, and nested types together, asserting both symbol parents and call-reference containers.
118
+
C# callable-containment fixtures should cover block-bodied test methods, local and nested local functions, named lambdas, expression-bodied members, and nested types together, asserting both symbol parents and call-reference containers. Local-function identity coverage additionally keeps pre/post-declaration calls, nested and sibling blocks, overloads, parameter/local delegate shadowing, method groups, identical enclosing names in unrelated types, incomplete ranges, persisted graph/query/inspect/impact behavior, and LSP definition/reference parity in one coordinated contract (#5188, extending #4840).
119
119
C# switch-expression returned-lambda coverage pairs a direct `ReferenceExtractorCSharpTests` regression with an `IndexCommandRunnerFullScanTests` `--rebuild` graph fixture. Keep expression/block, parenthesized, multiline, nested-switch, async, qualified/unqualified, and non-lambda arms together; assert raw call rows, enclosing containers, exact locations, callers/callees, complete graph readiness, and negative positional-pattern/enum controls including guarded, nested, and contextual-keyword-designation patterns with a following-line arrow (#5085).
120
120
Repository-metadata coverage lives in `SymbolExtractorRepositoryMetadataTests.cs` and `ReferenceExtractorRepositoryMetadataTests.cs`; keep TOML, JSON Lines, ignore/attributes, EditorConfig, `.rules`, and application-manifest capability assertions coordinated with conservative local-path and malformed-record controls.
121
121
Capability-regression fixtures that require an unsupported language use the explicit `text` placeholder or an ambiguity bucket; do not use a recognized repository-metadata format as the unsupported control.
@@ -1255,7 +1255,7 @@ dotnet test --filter "FullyQualifiedName~GitHelperTests"
-**C# local functions now resolve by lexical scope (#5188)** — Calls and method groups bind to the nearest visible local-function overload family across declaration order, nested blocks, top-level statement files, lambdas, and expression-bodied declarations. Parameter and local delegate values shadow local functions, sibling or unrelated enclosing scopes and files no longer create false candidates, and incomplete range evidence remains unresolved across graph queries and LSP reads. Existing C# indexes are refreshed through the updated extractor and reference-identity contracts.
18
+
19
+
## 日本語
20
+
21
+
-**C# の local function を字句スコープで解決するよう修正しました (#5188)** — call と method group は、宣言順、nested block、top-level statement file、lambda、expression-bodied 宣言を含め、最も近い可視 local function の overload family に結び付きます。parameter と local delegate value は local function を shadow し、兄弟または無関係な enclosing scope と file は誤った候補を生成せず、不完全な range evidence は graph query と LSP read の双方で未解決のままになります。既存の C# index は更新した extractor と reference-identity contract により再抽出されます。
-**Bounded field projection now preserves truthful response contracts (#5190)** — empty graph collections remain empty with zero counts, projection-incompatible explicit formats return a usage error, and `body` / `body_content` projections retain the range, truncation, omission, and recovery metadata needed to interpret or resume bounded content.
0 commit comments