mirror of
https://github.com/colbymchenry/codegraph.git
synced 2026-09-19 07:34:57 +08:00
1601e4ad12
Pascal unit/class `const` sections already extracted as `constant`, so wiring was add-to-`VALUE_REF_LANGS` + shadow prune + two Pascal-specific fixes: **`constant`-only targets** — the Pascal extractor emits function parameters (`const ATarget: TControl`, `var Dest: …`) and class fields as `variable` at enclosing scope, which would collapse to noisy file-wide targets. Genuine shared values are all `constant` (`declConst`), so targets are restricted to that kind. (Unit `var` globals are the rare cost; the parameter/field noise dominates.) **Sibling-body fix (same as Dart)** — Pascal attaches a proc body (`block`) as a next sibling of the `declProc` header (the reader scope), both under `defProc`, not as a child. Extended the existing Dart `function_body` sibling-pull to also walk a `block` sibling so reads inside the body are found. Shadow prune wired for `declConst`/`declVar` — a function-local `const X` shadows a unit `const X`. Validated S/M/L (horse / mORMot2 / castle-engine): node count identical on/off, precision sample 100% TP (font/crypto/DB/FFI binding consts); headline is FFI library-name constants read by hundreds of `external` declarations (impact 2→1880, 1→358). Caveats: low same-file density on app code (cross-unit reads; horse gave 4 edges), the `constant`-only restriction, a rare tree-sitter-pascal misparse of `const` params in complex Delphi signatures, and case-insensitivity (exact-text scan misses a differently-cased reference — a miss, never an FP). Coverage now 15 languages.