mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-01 22:00:20 +02:00
codetools: FindMissingUnits: do not find fpc sources if there is no ppu in fpc search path
git-svn-id: trunk@41412 -
This commit is contained in:
parent
9e57b13d8f
commit
c6da313e09
@ -172,8 +172,8 @@ type
|
||||
function DirectoryCachePoolGetString(const ADirectory: string;
|
||||
const AStringType: TCTDirCacheString): string;
|
||||
function DirectoryCachePoolFindVirtualFile(const Filename: string): string;
|
||||
function DirectoryCachePoolGetUnitFromSet(const UnitSet, AnUnitName: string
|
||||
): string;
|
||||
function DirectoryCachePoolGetUnitFromSet(const UnitSet, AnUnitName: string;
|
||||
SrcSearchRequiresPPU: boolean): string;
|
||||
function DirectoryCachePoolGetCompiledUnitFromSet(
|
||||
const UnitSet, AnUnitName: string): string;
|
||||
procedure DirectoryCachePoolIterateFPCUnitsFromSet(const UnitSet: string;
|
||||
@ -5798,7 +5798,7 @@ begin
|
||||
end;
|
||||
|
||||
function TCodeToolManager.DirectoryCachePoolGetUnitFromSet(const UnitSet,
|
||||
AnUnitName: string): string;
|
||||
AnUnitName: string; SrcSearchRequiresPPU: boolean): string;
|
||||
var
|
||||
Changed: boolean;
|
||||
UnitSetCache: TFPCUnitSetCache;
|
||||
@ -5813,7 +5813,7 @@ begin
|
||||
debugln(['TCodeToolManager.DirectoryCachePoolGetUnitFromSet outdated UnitSet="',dbgstr(UnitSet),'"']);
|
||||
exit;
|
||||
end;
|
||||
Result:=UnitSetCache.GetUnitSrcFile(AnUnitName,false);
|
||||
Result:=UnitSetCache.GetUnitSrcFile(AnUnitName,SrcSearchRequiresPPU);
|
||||
end;
|
||||
|
||||
function TCodeToolManager.DirectoryCachePoolGetCompiledUnitFromSet(
|
||||
|
@ -861,7 +861,7 @@ type
|
||||
function GetUnitToSourceTree(AutoUpdate: boolean): TStringToStringTree; // unit name to file name (maybe relative)
|
||||
function GetSourceDuplicates(AutoUpdate: boolean): TStringToStringTree; // unit to semicolon separated list of files
|
||||
function GetUnitSrcFile(const AnUnitName: string;
|
||||
MustHavePPU: boolean = true;
|
||||
SrcSearchRequiresPPU: boolean = true;
|
||||
SkipPPUCheckIfTargetIsSourceOnly: boolean = true): string;
|
||||
function GetCompiledUnitFile(const AUnitName: string): string;
|
||||
property ChangeStamp: integer read FChangeStamp;
|
||||
@ -8421,9 +8421,9 @@ begin
|
||||
end;
|
||||
|
||||
function TFPCUnitSetCache.GetUnitSrcFile(const AnUnitName: string;
|
||||
MustHavePPU: boolean; SkipPPUCheckIfTargetIsSourceOnly: boolean): string;
|
||||
SrcSearchRequiresPPU: boolean; SkipPPUCheckIfTargetIsSourceOnly: boolean): string;
|
||||
{ Searches the unit in the FPC search path and sources.
|
||||
MustHavePPU: only search the sources if there is a ppu in the search path
|
||||
SrcSearchRequiresPPU: only search the sources if there is a ppu in the search path
|
||||
}
|
||||
var
|
||||
Tree: TStringToStringTree;
|
||||
@ -8442,11 +8442,14 @@ begin
|
||||
// there is a ppu
|
||||
end else if UnitInFPCPath<>'' then begin
|
||||
// there is a pp or pas in the FPC search path
|
||||
{$IFDEF ShowTriedUnits}
|
||||
debugln(['TFPCUnitSetCache.GetUnitSrcFile Unit="',AnUnitName,'" source in FPC search path: "',Result,'"']);
|
||||
{$ENDIF}
|
||||
Result:=UnitInFPCPath;
|
||||
exit;
|
||||
end else begin
|
||||
// unit has no ppu in the FPC ppu search path
|
||||
if MustHavePPU then begin
|
||||
if SrcSearchRequiresPPU then begin
|
||||
if ConfigCache.HasPPUs then begin
|
||||
// but there are other ppu files
|
||||
{$IFDEF ShowTriedUnits}
|
||||
@ -8467,6 +8470,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
// search the sources
|
||||
if Tree<>nil then begin
|
||||
Result:=Tree[AnUnitName];
|
||||
if (Result<>'') and (not FilenameIsAbsolute(Result)) then
|
||||
|
@ -169,7 +169,8 @@ type
|
||||
function IndexOfFileCaseInsensitive(ShortFilename: PChar): integer;
|
||||
function IndexOfFileCaseSensitive(ShortFilename: PChar): integer;
|
||||
function FindUnitLink(const AUnitName: string): string;
|
||||
function FindUnitInUnitSet(const AUnitName: string): string;
|
||||
function FindUnitInUnitSet(const AUnitName: string;
|
||||
SrcSearchRequiresPPU: boolean = true): string;
|
||||
function FindCompiledUnitInUnitSet(const AUnitName: string): string;
|
||||
function FindFile(const ShortFilename: string;
|
||||
const FileCase: TCTSearchFileCase): string;
|
||||
@ -180,7 +181,7 @@ type
|
||||
function FindUnitSourceInCleanSearchPath(const AUnitName,
|
||||
SearchPath: string; AnyCase: boolean): string;
|
||||
function FindUnitSourceInCompletePath(var AUnitName, InFilename: string;
|
||||
AnyCase: boolean): string;
|
||||
AnyCase: boolean; FPCSrcSearchRequiresPPU: boolean = false): string;
|
||||
function FindCompiledUnitInCompletePath(const AnUnitname: string;
|
||||
AnyCase: boolean): string;
|
||||
procedure IterateFPCUnitsInSet(const Iterate: TCTOnIterateFile);
|
||||
@ -202,7 +203,8 @@ type
|
||||
const AStringType: TCTDirCacheString
|
||||
): string of object;
|
||||
TCTDirCacheFindVirtualFile = function(const Filename: string): string of object;
|
||||
TCTGetUnitFromSet = function(const UnitSet, AnUnitName: string): string of object;
|
||||
TCTGetUnitFromSet = function(const UnitSet, AnUnitName: string;
|
||||
SrcSearchRequiresPPU: boolean): string of object;
|
||||
TCTGetCompiledUnitFromSet = function(const UnitSet, AnUnitName: string): string of object;
|
||||
TCTIterateFPCUnitsFromSet = procedure(const UnitSet: string;
|
||||
const Iterate: TCTOnIterateFile) of object;
|
||||
@ -877,13 +879,14 @@ begin
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
function TCTDirectoryCache.FindUnitInUnitSet(const AUnitName: string): string;
|
||||
function TCTDirectoryCache.FindUnitInUnitSet(const AUnitName: string;
|
||||
SrcSearchRequiresPPU: boolean): string;
|
||||
var
|
||||
UnitSet: string;
|
||||
begin
|
||||
UnitSet:=Strings[ctdcsUnitSet];
|
||||
//debugln(['TCTDirectoryCache.FindUnitInUnitSet Directory="',Directory,'" UnitSet="',UnitSet,'" AUnitName="',AUnitName,'"']);
|
||||
Result:=Pool.OnGetUnitFromSet(UnitSet,AUnitName);
|
||||
Result:=Pool.OnGetUnitFromSet(UnitSet,AUnitName,SrcSearchRequiresPPU);
|
||||
//debugln(['TCTDirectoryCache.FindUnitInUnitSet Directory="',Directory,'" UnitSet="',dbgstr(UnitSet),'" AUnitName="',AUnitName,'" Result="',Result,'"']);
|
||||
end;
|
||||
|
||||
@ -1135,8 +1138,9 @@ begin
|
||||
Result:='';
|
||||
end;
|
||||
|
||||
function TCTDirectoryCache.FindUnitSourceInCompletePath(
|
||||
var AUnitName, InFilename: string; AnyCase: boolean): string;
|
||||
function TCTDirectoryCache.FindUnitSourceInCompletePath(var AUnitName,
|
||||
InFilename: string; AnyCase: boolean; FPCSrcSearchRequiresPPU: boolean
|
||||
): string;
|
||||
|
||||
function FindInFilenameLowUp(aFilename: string): string;
|
||||
begin
|
||||
@ -1252,7 +1256,7 @@ begin
|
||||
{$IFDEF ShowTriedUnits}
|
||||
DebugLn(['TCTDirectoryCache.FindUnitSourceInCompletePath unit ',AUnitName,' not found in SrcPath="',SrcPath,'" Directory="',Directory,'" searchin in unitset ...']);
|
||||
{$ENDIF}
|
||||
Result:=FindUnitInUnitSet(AUnitName);
|
||||
Result:=FindUnitInUnitSet(AUnitName,FPCSrcSearchRequiresPPU);
|
||||
{$IFDEF ShowTriedUnits}
|
||||
if Result='' then begin
|
||||
DebugLn(['TCTDirectoryCache.FindUnitSourceInCompletePath unit ',AUnitName,' not found in unitlinks. Directory="',Directory,'"']);
|
||||
|
@ -1476,7 +1476,9 @@ end;
|
||||
function TStandardCodeTool.FindMissingUnits(var MissingUnits: TStrings;
|
||||
FixCase: boolean; SearchImplementation: boolean;
|
||||
SourceChangeCache: TSourceChangeCache): boolean;
|
||||
|
||||
const
|
||||
FPCSrcSearchRequiresPPU = true;
|
||||
|
||||
function CheckUsesSection(UsesNode: TCodeTreeNode): boolean;
|
||||
var
|
||||
OldUnitName: String;
|
||||
@ -1500,7 +1502,7 @@ function TStandardCodeTool.FindMissingUnits(var MissingUnits: TStrings;
|
||||
NewUnitName:=OldUnitName;
|
||||
NewInFilename:=OldInFilename;
|
||||
AFilename:=DirectoryCache.FindUnitSourceInCompletePath(
|
||||
NewUnitName,NewInFilename,true);
|
||||
NewUnitName,NewInFilename,true,FPCSrcSearchRequiresPPU);
|
||||
s:=NewUnitName;
|
||||
if NewInFilename<>'' then
|
||||
s:=s+' in '''+NewInFilename+'''';
|
||||
|
Loading…
Reference in New Issue
Block a user