mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 14:38:01 +02:00
codetools: fixed FindSourceNameReferences searching longest fitting unitname
This commit is contained in:
parent
116b91b184
commit
7dbb6355e5
@ -7375,7 +7375,7 @@ var
|
||||
ExprP:=PChar(Expr);
|
||||
for i:=0 to length(UseNames)-1 do begin
|
||||
UseNameP:=PChar(UseNames[i]);
|
||||
if CompareIdentifiers(UseNameP,ExprP)=0 then begin
|
||||
if CompareDottedIdentifiers(UseNameP,ExprP)=0 then begin
|
||||
DotCount:=GetDotCountInIdentifier(UseNameP);
|
||||
if DotCount>BestDotCount then begin
|
||||
BestDotCount:=DotCount;
|
||||
|
@ -73,6 +73,7 @@ type
|
||||
procedure TestRenameUsedUnit_Impl;
|
||||
procedure TestRenameUsedUnit_FN_KeepShort;
|
||||
procedure TestRenameUsedUnit_InFilename;
|
||||
procedure TestRenameUsedUnit_LongestUnitnameWins;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -1656,6 +1657,64 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TTestRefactoring.TestRenameUsedUnit_LongestUnitnameWins;
|
||||
var
|
||||
RedUnit, RedGreenUnit, RedGreenBlueUnit: TCodeBuffer;
|
||||
begin
|
||||
RedUnit:=CodeToolBoss.CreateFile('red.pas');
|
||||
RedGreenUnit:=CodeToolBoss.CreateFile('red.green.pas');
|
||||
RedGreenBlueUnit:=CodeToolBoss.CreateFile('red.green.blue.pas');
|
||||
try
|
||||
RedUnit.Source:='unit Red;'+LineEnding
|
||||
+'interface'+LineEnding
|
||||
+'var'+LineEnding
|
||||
+' Red, Green: word;'+LineEnding
|
||||
+'implementation'+LineEnding
|
||||
+'end.';
|
||||
|
||||
RedGreenUnit.Source:='unit Red.Green;'+LineEnding
|
||||
+'interface'+LineEnding
|
||||
+'var'+LineEnding
|
||||
+' Green, Blue: word;'+LineEnding
|
||||
+'implementation'+LineEnding
|
||||
+'end.';
|
||||
|
||||
RedGreenBlueUnit.Source:='unit Red.Green.Blue;'+LineEnding
|
||||
+'interface'+LineEnding
|
||||
+'var'+LineEnding
|
||||
+' Blue: word;'+LineEnding
|
||||
+'implementation'+LineEnding
|
||||
+'end.';
|
||||
|
||||
Add([
|
||||
'program test1;',
|
||||
'{$mode objfpc}{$H+}',
|
||||
'uses Red, Red.Green, Red.Green.Blue;',
|
||||
'begin',
|
||||
' red.red:=1;',
|
||||
' red.green.green:=2;',
|
||||
' red.green.blue.blue:=3;',
|
||||
'end.',
|
||||
'']);
|
||||
RenameUsedUnitRefs(RedGreenUnit,'&End','end.pas');
|
||||
CheckDiff(Code,[
|
||||
'program test1;',
|
||||
'{$mode objfpc}{$H+}',
|
||||
'uses Red, &End, Red.Green.Blue;',
|
||||
'begin',
|
||||
' red.red:=1;',
|
||||
' &End.green:=2;',
|
||||
' red.green.blue.blue:=3;',
|
||||
'end.',
|
||||
'']);
|
||||
|
||||
finally
|
||||
RedUnit.IsDeleted:=true;
|
||||
RedGreenUnit.IsDeleted:=true;
|
||||
RedGreenBlueUnit.IsDeleted:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterTests([TTestRefactoring]);
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user