mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-10 22:29:23 +02:00
fpdoc: free TPasElement instead of reference count
This commit is contained in:
parent
eae098ae3e
commit
acc8c69cf5
@ -474,12 +474,7 @@ begin
|
||||
end;
|
||||
|
||||
destructor TFPDocEngine.Destroy;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if FPackages.Count > 0 then
|
||||
for i := 0 to FPackages.Count - 1 do
|
||||
TPasPackage(FPackages[i]).Release{$IFDEF CheckPasTreeRefCount}('TFPDocEngine.Destroy'){$ENDIF};
|
||||
FreeAndNil(FPackages);
|
||||
FreeAndNil(FRootDocNode);
|
||||
FreeAndNil(FRootLinkNode);
|
||||
@ -567,14 +562,14 @@ var
|
||||
end;
|
||||
end;
|
||||
|
||||
function ResolvePackageModule(AName:String;out pkg:TPasPackage;out module:TPasModule;createnew:boolean):String;
|
||||
function ResolvePackageModule(AName: String; out pkg: TPasPackage; out Module: TPasModule; CreateNew: boolean): String;
|
||||
var
|
||||
DotPos, DotPos2, i: Integer;
|
||||
s: String;
|
||||
HPackage: TPasPackage;
|
||||
|
||||
begin
|
||||
pkg:=nil; module:=nil; result:='';
|
||||
pkg:=nil; Module:=nil; result:='';
|
||||
|
||||
// Find or create package
|
||||
DotPos := Pos('.', AName);
|
||||
@ -595,7 +590,7 @@ var
|
||||
FPackages.Add(HPackage);
|
||||
end;
|
||||
|
||||
// Find or create module
|
||||
// Find or create Module
|
||||
DotPos2 := DotPos;
|
||||
repeat
|
||||
Inc(DotPos2);
|
||||
@ -613,8 +608,10 @@ var
|
||||
if not CreateNew then
|
||||
exit;
|
||||
Module := TPasExternalModule.Create(s, HPackage);
|
||||
FOwnedElements.Add(Module);
|
||||
HPackage.Modules.Add(Module);
|
||||
Module.InterfaceSection := TInterfaceSection.Create('', Module);
|
||||
FOwnedElements.Add(Module.InterfaceSection);
|
||||
Module.PackageName:= HPackage.Name;
|
||||
end;
|
||||
pkg:=hpackage;
|
||||
@ -674,6 +671,7 @@ var
|
||||
s:= ResolvePackageModule(AName,HPackage,Module,True);
|
||||
// Create node for class
|
||||
Result := TPasExternalClassType.Create(s, Module.InterfaceSection);
|
||||
FOwnedElements.Add(Result);
|
||||
Result.ObjKind := okClass;
|
||||
Module.InterfaceSection.Declarations.Add(Result);
|
||||
Module.InterfaceSection.Classes.Add(Result);
|
||||
@ -703,7 +701,6 @@ var
|
||||
result:=TPasClassType(ResolveClassType(clname));
|
||||
if assigned(result) and not (cls=result) then // save from tobject=implicit tobject
|
||||
begin
|
||||
result.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.ResolveAndLinkClass'){$ENDIF};
|
||||
if IsClass then
|
||||
begin
|
||||
cls.ancestortype:=result;
|
||||
@ -745,7 +742,6 @@ var
|
||||
Result := TPasAliasType(CreateElement(TPasAliasType,s,module.interfacesection,vispublic,'',0));
|
||||
module.interfacesection.Declarations.Add(Result);
|
||||
TPasAliasType(Result).DestType := cl2;
|
||||
cl2.addref{$IFDEF CheckPasTreeRefCount}('ReadContentFile.CreateAliasType'){$ENDIF};
|
||||
end
|
||||
end
|
||||
end;
|
||||
@ -838,6 +834,7 @@ var
|
||||
else
|
||||
raise Exception.Create('Invalid member type: ' + s[2]);
|
||||
end;
|
||||
FOwnedElements.Add(Member);
|
||||
CurClass.Members.Add(Member);
|
||||
end;
|
||||
end;
|
||||
@ -1016,6 +1013,7 @@ function TFPDocEngine.CreateElement(AClass: TPTreeElement; const AName: String;
|
||||
const ASourceFilename: String; ASourceLinenumber: Integer): TPasElement;
|
||||
begin
|
||||
Result := AClass.Create(AName, AParent);
|
||||
FOwnedElements.Add(Result);
|
||||
Result.Visibility := AVisibility;
|
||||
if AClass.InheritsFrom(TPasModule) then
|
||||
CurModule := TPasModule(Result);
|
||||
|
Loading…
Reference in New Issue
Block a user