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
This commit is contained in:
Olaf Monien
2026-02-11 00:17:29 +01:00
parent 645fd71e45
commit dcca22c78f
15 changed files with 739 additions and 384 deletions
+75
View File
@@ -0,0 +1,75 @@
/// Unit UTypes: Delphi-Typsystem-Fixture.
/// Testet: Enums, Records (mit Feldern), Type-Aliase,
/// Konstanten, verschachtelte Typen, Class-Methoden (static).
unit UTypes;
interface
uses
System.SysUtils;
const
C_MAX_RETRIES = 3;
C_DEFAULT_NAME = 'Guest';
type
/// Enum: Benutzerrolle
TUserRole = (urAdmin, urEditor, urViewer);
/// Record: Punkt mit X/Y-Koordinaten
TPoint2D = record
X: Double;
Y: Double;
end;
/// Type-Alias
TUserName = string;
/// Klasse mit class method (static), verschachteltem Typ und Enum-Verwendung
TUserInfo = class
public
type
/// Verschachtelter Record innerhalb der Klasse
TAddress = record
Street: string;
City: string;
Zip: string;
end;
private
FName: TUserName;
FRole: TUserRole;
FAddress: TAddress;
public
constructor Create(const AName: TUserName; ARole: TUserRole);
function GetDisplayName: string;
class function CreateAdmin(const AName: TUserName): TUserInfo; static;
property Name: TUserName read FName write FName;
property Role: TUserRole read FRole;
property Address: TAddress read FAddress write FAddress;
end;
implementation
{ TUserInfo }
constructor TUserInfo.Create(const AName: TUserName; ARole: TUserRole);
begin
FName := AName;
FRole := ARole;
end;
function TUserInfo.GetDisplayName: string;
begin
if FRole = urAdmin then
Result := '[Admin] ' + FName
else
Result := FName;
end;
class function TUserInfo.CreateAdmin(const AName: TUserName): TUserInfo;
begin
Result := TUserInfo.Create(AName, urAdmin);
end;
end.