mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-21 00:59:15 +02:00
CodeTools: support {$modeswitch multihelpers}. Issue #35911
git-svn-id: trunk@62702 -
This commit is contained in:
parent
dfd2b9ea65
commit
08b5b4a244
@ -521,7 +521,7 @@ type
|
|||||||
public
|
public
|
||||||
function AddFromHelperNode(HelperNode: TCodeTreeNode;
|
function AddFromHelperNode(HelperNode: TCodeTreeNode;
|
||||||
Tool: TFindDeclarationTool; Replace: Boolean): TFDHelpersListItem;
|
Tool: TFindDeclarationTool; Replace: Boolean): TFDHelpersListItem;
|
||||||
procedure AddFromList(const ExtList: TFDHelpersList);
|
procedure AddFromList(const Tool: TFindDeclarationTool; const ExtList: TFDHelpersList);
|
||||||
function IterateFromClassNode(ClassNode: TCodeTreeNode;
|
function IterateFromClassNode(ClassNode: TCodeTreeNode;
|
||||||
Tool: TFindDeclarationTool; out HelperContext: TFindContext; out Iterator: TAVLTreeNode): boolean; // returns newest (rightmost)
|
Tool: TFindDeclarationTool; out HelperContext: TFindContext; out Iterator: TAVLTreeNode): boolean; // returns newest (rightmost)
|
||||||
function GetNext(out HelperContext: TFindContext; var Iterator: TAVLTreeNode): boolean;
|
function GetNext(out HelperContext: TFindContext; var Iterator: TAVLTreeNode): boolean;
|
||||||
@ -1770,13 +1770,14 @@ begin
|
|||||||
Result := ComparePointers(I1^.Context.Node, I2.ForExprType.Context.Node);
|
Result := ComparePointers(I1^.Context.Node, I2.ForExprType.Context.Node);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFDHelpersList.AddFromList(const ExtList: TFDHelpersList);
|
procedure TFDHelpersList.AddFromList(const Tool: TFindDeclarationTool;
|
||||||
|
const ExtList: TFDHelpersList);
|
||||||
function CopyNode(ANode: TAVLTreeNode): TFDHelpersListItem;
|
function CopyNode(ANode: TAVLTreeNode): TFDHelpersListItem;
|
||||||
var
|
var
|
||||||
FromNode: TFDHelpersListItem;
|
FromNode: TFDHelpersListItem;
|
||||||
begin
|
begin
|
||||||
FromNode := TFDHelpersListItem(ANode.Data);
|
FromNode := TFDHelpersListItem(ANode.Data);
|
||||||
if Kind=fdhlkDelphiHelper then
|
if (Kind=fdhlkDelphiHelper) and not (msMultiHelpers in Tool.Scanner.CompilerModeSwitches) then
|
||||||
if FTree.FindKey(FromNode, @CompareHelpersList) <> nil then
|
if FTree.FindKey(FromNode, @CompareHelpersList) <> nil then
|
||||||
Exit(nil); //FPC & Delphi don't support duplicate class helpers!
|
Exit(nil); //FPC & Delphi don't support duplicate class helpers!
|
||||||
Result := TFDHelpersListItem.Create;
|
Result := TFDHelpersListItem.Create;
|
||||||
@ -1840,7 +1841,7 @@ begin
|
|||||||
|
|
||||||
if ExprType.Desc in xtAllIdentTypes then
|
if ExprType.Desc in xtAllIdentTypes then
|
||||||
begin
|
begin
|
||||||
if Kind=fdhlkDelphiHelper then begin
|
if (Kind=fdhlkDelphiHelper) and not (msMultiHelpers in Tool.Scanner.CompilerModeSwitches) then begin
|
||||||
// class/type/record helpers only allow one helper per class
|
// class/type/record helpers only allow one helper per class
|
||||||
OldKey := FTree.FindKey(@ExprType, @CompareHelpersListExprType);
|
OldKey := FTree.FindKey(@ExprType, @CompareHelpersListExprType);
|
||||||
if OldKey <> nil then
|
if OldKey <> nil then
|
||||||
@ -4519,7 +4520,8 @@ var
|
|||||||
finally
|
finally
|
||||||
Params.Flags := OldFlags;
|
Params.Flags := OldFlags;
|
||||||
end;
|
end;
|
||||||
until (HelperKind=fdhlkDelphiHelper) or (not Helpers.GetNext(HelperContext,HelperIterator));
|
until ((HelperKind=fdhlkDelphiHelper) and not (msMultiHelpers in Params.StartTool.Scanner.CompilerModeSwitches))
|
||||||
|
or (not Helpers.GetNext(HelperContext,HelperIterator));
|
||||||
//debugln(['SearchInHelpers END']);
|
//debugln(['SearchInHelpers END']);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -6015,7 +6017,7 @@ begin
|
|||||||
for HelperKind in TFDHelpersListKind do begin
|
for HelperKind in TFDHelpersListKind do begin
|
||||||
Cache:=FInterfaceHelperCache[HelperKind];
|
Cache:=FInterfaceHelperCache[HelperKind];
|
||||||
if (Cache<>nil) and (Cache.Count>0) then
|
if (Cache<>nil) and (Cache.Count>0) then
|
||||||
Params.GetHelpers(HelperKind,true).AddFromList(FInterfaceHelperCache[HelperKind]);
|
Params.GetHelpers(HelperKind,true).AddFromList(AskingTool, FInterfaceHelperCache[HelperKind]);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user