Scope cells refactoring
This commit is contained in:
+4
-16
@@ -436,10 +436,6 @@ constructor TIdentifierNode.Create(AName: string);
|
||||
begin
|
||||
inherited Create;
|
||||
FName := AName;
|
||||
// Default to unresolved.
|
||||
FResolvedAddress.Kind := akUnresolved;
|
||||
FResolvedAddress.ScopeDepth := -1;
|
||||
FResolvedAddress.SlotIndex := -1;
|
||||
end;
|
||||
|
||||
function TIdentifierNode.Accept(const Visitor: IAstVisitor): TAstValue;
|
||||
@@ -904,9 +900,7 @@ begin
|
||||
upvalueMap := FUpvalueMapStack.Peek;
|
||||
upvalueNodes := FUpvalueNodesStack.Peek;
|
||||
|
||||
originalAddress.Kind := akLocalOrParent;
|
||||
originalAddress.ScopeDepth := originalDepth;
|
||||
originalAddress.SlotIndex := originalIndex;
|
||||
originalAddress.Create(akLocalOrParent, originalDepth, originalIndex, identNode.Name);
|
||||
|
||||
if not upvalueMap.TryGetValue(originalAddress, upvalueIndex) then
|
||||
begin
|
||||
@@ -915,15 +909,11 @@ begin
|
||||
upvalueNodes.Add(identNode);
|
||||
end;
|
||||
|
||||
identNode.FResolvedAddress.Kind := akUpvalue;
|
||||
identNode.FResolvedAddress.SlotIndex := upvalueIndex;
|
||||
identNode.FResolvedAddress.ScopeDepth := 0;
|
||||
identNode.FResolvedAddress.Create(akUpvalue, 0, upvalueIndex, identNode.Name);
|
||||
end
|
||||
else
|
||||
begin
|
||||
identNode.FResolvedAddress.Kind := akLocalOrParent;
|
||||
identNode.FResolvedAddress.ScopeDepth := originalDepth;
|
||||
identNode.FResolvedAddress.SlotIndex := originalIndex;
|
||||
identNode.FResolvedAddress.Create(akLocalOrParent, originalDepth, originalIndex, identNode.Name);
|
||||
end;
|
||||
end
|
||||
else
|
||||
@@ -989,9 +979,7 @@ begin
|
||||
Node.Initializer.Accept(Self);
|
||||
|
||||
slotIndex := (FCurrentDescriptor as TScopeDescriptor).Define(Node.Identifier.Name);
|
||||
identNode.FResolvedAddress.Kind := akLocalOrParent;
|
||||
identNode.FResolvedAddress.ScopeDepth := 0;
|
||||
identNode.FResolvedAddress.SlotIndex := slotIndex;
|
||||
identNode.FResolvedAddress.Create(akLocalOrParent, 0, slotIndex, Node.Identifier.Name);
|
||||
end;
|
||||
|
||||
{ TAst }
|
||||
|
||||
Reference in New Issue
Block a user