mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 02:49:19 +02:00
IDE: implemented check if package uses Owner of property
git-svn-id: trunk@14754 -
This commit is contained in:
parent
4a0ceae39d
commit
d547195c8f
@ -219,6 +219,8 @@ type
|
|||||||
const Name: string): TLazPackage;
|
const Name: string): TLazPackage;
|
||||||
function FindDependencyRecursively(FirstDependency: TPkgDependency;
|
function FindDependencyRecursively(FirstDependency: TPkgDependency;
|
||||||
PkgID: TLazPackageID): TPkgDependency;
|
PkgID: TLazPackageID): TPkgDependency;
|
||||||
|
function FindDependencyRecursively(FirstDependency: TPkgDependency;
|
||||||
|
const PkgName: string): TPkgDependency;
|
||||||
function FindConflictRecursively(FirstDependency: TPkgDependency;
|
function FindConflictRecursively(FirstDependency: TPkgDependency;
|
||||||
PkgID: TLazPackageID): TPkgDependency;
|
PkgID: TLazPackageID): TPkgDependency;
|
||||||
function FindUnit(StartPackage: TLazPackage; const TheUnitName: string;
|
function FindUnit(StartPackage: TLazPackage; const TheUnitName: string;
|
||||||
@ -871,6 +873,37 @@ begin
|
|||||||
Result:=Find(FirstDependency);
|
Result:=Find(FirstDependency);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TLazPackageGraph.FindDependencyRecursively(
|
||||||
|
FirstDependency: TPkgDependency; const PkgName: string): TPkgDependency;
|
||||||
|
// returns one compatible dependency for PkgName
|
||||||
|
|
||||||
|
function Find(CurDependency: TPkgDependency): TPkgDependency;
|
||||||
|
var
|
||||||
|
RequiredPackage: TLazPackage;
|
||||||
|
begin
|
||||||
|
while CurDependency<>nil do begin
|
||||||
|
if SysUtils.CompareText(CurDependency.PackageName,PkgName)=0 then begin
|
||||||
|
Result:=CurDependency;
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
if CurDependency.LoadPackageResult=lprSuccess then begin
|
||||||
|
RequiredPackage:=CurDependency.RequiredPackage;
|
||||||
|
if (not (lpfVisited in RequiredPackage.Flags)) then begin
|
||||||
|
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
||||||
|
Result:=Find(RequiredPackage.FirstRequiredDependency);
|
||||||
|
if Result<>nil then exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
CurDependency:=CurDependency.NextRequiresDependency;
|
||||||
|
end;
|
||||||
|
Result:=nil;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
MarkAllPackagesAsNotVisited;
|
||||||
|
Result:=Find(FirstDependency);
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.FindConflictRecursively(
|
function TLazPackageGraph.FindConflictRecursively(
|
||||||
FirstDependency: TPkgDependency; PkgID: TLazPackageID): TPkgDependency;
|
FirstDependency: TPkgDependency; PkgID: TLazPackageID): TPkgDependency;
|
||||||
// returns one conflicting dependency for PkgID
|
// returns one conflicting dependency for PkgID
|
||||||
@ -1729,8 +1762,8 @@ end;
|
|||||||
|
|
||||||
function TLazPackageGraph.FindBrokenDependencyPath(APackage: TLazPackage;
|
function TLazPackageGraph.FindBrokenDependencyPath(APackage: TLazPackage;
|
||||||
FirstDependency: TPkgDependency): TFPList;
|
FirstDependency: TPkgDependency): TFPList;
|
||||||
// returns the first broken dependency
|
// returns the first broken dependency (broken = not loaded)
|
||||||
// the first irems are TLazPackage, the last item is a TPkgDependency
|
// the first items are TLazPackage, the last item is a TPkgDependency
|
||||||
|
|
||||||
procedure FindBroken(Dependency: TPkgDependency; var PathList: TFPList);
|
procedure FindBroken(Dependency: TPkgDependency; var PathList: TFPList);
|
||||||
var
|
var
|
||||||
|
@ -3954,6 +3954,12 @@ var
|
|||||||
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
ConflictDependency:=PackageGraph.FindConflictRecursively(
|
||||||
FirstDependency,APackage);
|
FirstDependency,APackage);
|
||||||
if ConflictDependency<>nil then exit;
|
if ConflictDependency<>nil then exit;
|
||||||
|
if MainOwner is TLazPackage then begin
|
||||||
|
// check if package already uses MainOwner
|
||||||
|
ConflictDependency:=PackageGraph.FindDependencyRecursively(
|
||||||
|
APackage.FirstRequiredDependency,TLazPackage(MainOwner).Name);
|
||||||
|
if ConflictDependency<>nil then exit;
|
||||||
|
end;
|
||||||
end else begin
|
end else begin
|
||||||
// AnUnitInfo does not belong to a Package => can not be used
|
// AnUnitInfo does not belong to a Package => can not be used
|
||||||
exit;
|
exit;
|
||||||
|
Loading…
Reference in New Issue
Block a user