This commit is contained in:
Michael Schimmel
2025-10-30 20:27:44 +01:00
parent 798aa08f02
commit 0526ec8a24
17 changed files with 193 additions and 137 deletions
+7 -3
View File
@@ -319,7 +319,7 @@ end;
function TAstTransformer.VisitMemberAccess(const Node: IMemberAccessNode): TDataValue;
begin
var base := Accept(Node.Base).AsIntf<IAstNode>;
var member := Node.Member;
var member := Accept(Node.Member).AsIntf<IKeywordNode>;
if (base = Node.Base) and (member = Node.Member) then
Result := TDataValue.FromIntf<IMemberAccessNode>(Node)
else
@@ -331,6 +331,7 @@ var
i: Integer;
hasChanged: Boolean;
newFields: TArray<TRecordFieldLiteral>;
newKey: IKeywordNode;
newValue: IAstNode;
begin
hasChanged := False;
@@ -338,10 +339,13 @@ begin
for i := 0 to High(Node.Fields) do
begin
newKey := Accept(Node.Fields[i].Key).AsIntf<IKeywordNode>;
newValue := Accept(Node.Fields[i].Value).AsIntf<IAstNode>;
if newValue <> Node.Fields[i].Value then
if (newKey <> Node.Fields[i].Key) or (newValue <> Node.Fields[i].Value) then
hasChanged := True;
newFields[i] := TRecordFieldLiteral.Create(Node.Fields[i].Name, newValue);
newFields[i] := TRecordFieldLiteral.Create(newKey, newValue);
end;
if hasChanged then