浏览代码

* Procedure body is now reachable (and assigned). (patch from [email protected])

git-svn-id: trunk@15981 -
michael 15 年之前
父节点
当前提交
84c28084ac
共有 2 个文件被更改,包括 6 次插入0 次删除
  1. 5 0
      packages/fcl-passrc/src/pastree.pp
  2. 1 0
      packages/fcl-passrc/src/pparser.pp

+ 5 - 0
packages/fcl-passrc/src/pastree.pp

@@ -595,6 +595,8 @@ type
   TProcedureModifiers = Set of TProcedureModifier;
   TProcedureMessageType = (pmtInteger,pmtString);
                         
+  TProcedureBody = class;
+
   TPasProcedure = class(TPasProcedureBase)
   Private
     FCallingConvention : TCallingConvention;
@@ -609,6 +611,7 @@ type
     procedure GetModifiers(List: TStrings);
   public
     ProcType : TPasProcedureType;
+    Body : TProcedureBody;
     Procedure AddModifier(AModifier : TProcedureModifier);
     Function IsVirtual : Boolean;
     Function IsDynamic : Boolean;
@@ -1487,6 +1490,8 @@ destructor TPasProcedure.Destroy;
 begin
   if Assigned(ProcType) then
     ProcType.Release;
+  if Assigned(Body) then
+    Body.Release;
   inherited Destroy;
 end;
 

+ 1 - 0
packages/fcl-passrc/src/pparser.pp

@@ -2434,6 +2434,7 @@ var
   Body: TProcedureBody;
 begin
   Body := TProcedureBody(CreateElement(TProcedureBody, '', Parent));
+  TPasProcedure(Parent).Body:=Body;
   ParseDeclarations(Body);
 end;