Files
codegraph/Delphi/resolution/UnitResolution.md
T
Olaf Monien dcca22c78f Delphi-Konzept: Reale tree-sitter-pascal AST-Typen, Integration Guide, erweiterte Fixtures
- Alle Docs auf verifizierte AST-Knotentypen aktualisiert (declClass, declIntf, declProc, etc.)
- Scaffold/ entfernt und durch konkreten Integration Guide ersetzt (06-Integration-Guide.md)
- Neue Docs: AST-Referenz (03), NodeKind-Mapping (05), Integration Guide (06)
- Checklist um bekannte Einschränkungen erweitert (with-Statements, .dfm/.fmx, Generics)
- UAuth.pas erweitert: Sichtbarkeitsbereiche, Felder, Properties, Constructor/Destructor
- UTypes.pas neu: Enums, Records, Type-Aliase, Konstanten, Class Methods, verschachtelte Typen
- UnitResolution.md mit konkreten AST-Strukturen aktualisiert
- README.md an neue Architektur-Beschreibung angepasst
2026-02-11 00:17:29 +01:00

1.3 KiB

Unit Resolution Heuristics (uses → File)

Input

  • Extrahierte Edges vom Typ imports aus declUses-Knoten.
  • Extrahierte Nodes vom Typ module aus unit/program/library (Name aus moduleName-Kind-Knoten).

AST-Struktur

(declUses
  (kUses)
  (identifier "System.SysUtils")    ← Unit-Name
  (identifier "UAuth")              ← Unit-Name
  (kIn) (literalString "'UAuth.pas'")  ← optionaler Pfad
)

MVP Algorithm

  1. Build unitName → nodeId Map für alle indexierten Dateien (aus moduleName-Knoten).
  2. Für jeden imports-Edge mit Zielname X:
    • Exakter Match auf X
    • Case-insensitiver Match (Delphi ist case-insensitive)
    • Namespace-Normalisierung:
      • System.SysUtils → versuche auch SysUtils (letzter Segment)
    • Dateiname-basierter Fallback: XX.pas in den indexierten Dateien suchen
  3. Falls aufgelöst: edge.to_node_id = targetNodeId
  4. Falls nicht aufgelöst: edge.to_symbol = X beibehalten (Suche funktioniert trotzdem)

DPR/DPK in 'path' (Phase 2)

In Delphi-Projektdateien kann ein expliziter Pfad angegeben werden:

uses
  Foo in 'src/Foo.pas',
  Bar in 'Bar.pas';

Im AST erkennbar durch (kIn) (literalString) nach dem (identifier).

Enhancement:

  • literalString extrahieren und direkt zur Datei auflösen
  • Pfad relativ zur DPR/DPK-Datei interpretieren