31 lines
820 B
Markdown
31 lines
820 B
Markdown
# Unit Resolution Heuristics (uses → File)
|
|
|
|
## Input
|
|
|
|
- Extracted edges of kind `imports` from `uses` clauses.
|
|
- Extracted nodes of kind `unit|program|package|library` with their names.
|
|
|
|
## MVP Algorithm
|
|
|
|
1. Build `unitName -> nodeId` map for all indexed files.
|
|
2. For each `imports` edge with target name `X`:
|
|
- try exact match `X`
|
|
- try case-insensitive match
|
|
- try namespace normalization:
|
|
- `System.SysUtils` may correspond to unit `SysUtils` (optional heuristic)
|
|
3. If resolved: store `edge.to_node_id = targetNodeId`.
|
|
4. If not resolved: keep `edge.to_symbol = X` so search still works.
|
|
|
|
## DPR/DPK "in 'path'" cases (Phase 2)
|
|
|
|
In Delphi project files you can have:
|
|
|
|
```
|
|
uses
|
|
Foo in 'src/Foo.pas',
|
|
Bar in 'Bar.pas';
|
|
```
|
|
|
|
Enhancement:
|
|
- Parse optional path literal and resolve directly to file.
|