Scope cells refactoring
This commit is contained in:
+6
-22
@@ -187,19 +187,15 @@ type
|
||||
FParameters: TArray<IIdentifierNode>;
|
||||
FBody: IExpressionNode;
|
||||
FScopeDescriptor: IScopeDescriptor;
|
||||
FUpvalues: TArray<IIdentifierNode>;
|
||||
FUpvalueSourceAddresses: TArray<TResolvedAddress>;
|
||||
FUpvalues: TArray<TResolvedAddress>;
|
||||
function GetParameters: TArray<IIdentifierNode>;
|
||||
function GetBody: IExpressionNode;
|
||||
function GetScopeDescriptor: IScopeDescriptor;
|
||||
function GetUpvalues: TArray<IIdentifierNode>;
|
||||
function GetUpvalueSourceAddresses: TArray<TResolvedAddress>;
|
||||
function GetUpvalues: TArray<TResolvedAddress>;
|
||||
public
|
||||
constructor Create(const AParameters: TArray<IIdentifierNode>; const ABody: IExpressionNode);
|
||||
function Accept(const Visitor: IAstVisitor): TAstValue; override;
|
||||
procedure SetUpvalueData(const AUpvalues: TArray<IIdentifierNode>; const ASourceAddresses: TArray<TResolvedAddress>);
|
||||
property ScopeDescriptor: IScopeDescriptor read GetScopeDescriptor;
|
||||
property Upvalues: TArray<IIdentifierNode> read GetUpvalues;
|
||||
end;
|
||||
|
||||
{ TFunctionCallNode }
|
||||
@@ -583,19 +579,12 @@ begin
|
||||
FBody := ABody;
|
||||
FParameters := AParameters;
|
||||
FScopeDescriptor := nil;
|
||||
FUpvalues := [];
|
||||
FUpvalueSourceAddresses := []; // Initialize new field
|
||||
FUpvalues := []; // Initialize new field
|
||||
end;
|
||||
|
||||
function TLambdaExpressionNode.GetUpvalueSourceAddresses: TArray<TResolvedAddress>;
|
||||
function TLambdaExpressionNode.GetUpvalues: TArray<TResolvedAddress>;
|
||||
begin
|
||||
Result := FUpvalueSourceAddresses;
|
||||
end;
|
||||
|
||||
procedure TLambdaExpressionNode.SetUpvalueData(const AUpvalues: TArray<IIdentifierNode>; const ASourceAddresses: TArray<TResolvedAddress>);
|
||||
begin
|
||||
FUpvalues := AUpvalues;
|
||||
FUpvalueSourceAddresses := ASourceAddresses;
|
||||
Result := FUpvalues;
|
||||
end;
|
||||
|
||||
function TLambdaExpressionNode.Accept(const Visitor: IAstVisitor): TAstValue;
|
||||
@@ -618,11 +607,6 @@ begin
|
||||
Result := FScopeDescriptor;
|
||||
end;
|
||||
|
||||
function TLambdaExpressionNode.GetUpvalues: TArray<IIdentifierNode>;
|
||||
begin
|
||||
Result := FUpvalues;
|
||||
end;
|
||||
|
||||
{ TFunctionCallNode }
|
||||
|
||||
constructor TFunctionCallNode.Create(const ACallee: IExpressionNode; const AArguments: array of IExpressionNode);
|
||||
@@ -962,7 +946,7 @@ begin
|
||||
for var i := 0 to High(sortedPairs) do
|
||||
sourceAddresses[i] := sortedPairs[i].Key;
|
||||
|
||||
(Node as TLambdaExpressionNode).SetUpvalueData(upvalueNodes.ToArray, sourceAddresses);
|
||||
(Node as TLambdaExpressionNode).FUpvalues := sourceAddresses;
|
||||
|
||||
upvalueMap.Free;
|
||||
upvalueNodes.Free;
|
||||
|
||||
Reference in New Issue
Block a user