mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-04 12:00:18 +02:00
codetools: fixed method jump from objfpc generic method body to decl
This commit is contained in:
parent
b7aafac192
commit
2706cc285c
@ -47,7 +47,6 @@ uses
|
|||||||
FileProcs, CodeTree, CodeToolsStrConsts, PascalParserTool, StdCodeTools,
|
FileProcs, CodeTree, CodeToolsStrConsts, PascalParserTool, StdCodeTools,
|
||||||
KeywordFuncLists, BasicCodeTools, LinkScanner, CodeCache, PascalReaderTool;
|
KeywordFuncLists, BasicCodeTools, LinkScanner, CodeCache, PascalReaderTool;
|
||||||
|
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
{ TMethodJumpingCodeTool }
|
{ TMethodJumpingCodeTool }
|
||||||
@ -93,7 +92,6 @@ type
|
|||||||
procedure CalcMemSize(Stats: TCTMemStats); override;
|
procedure CalcMemSize(Stats: TCTMemStats); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ TMethodJumpingCodeTool }
|
{ TMethodJumpingCodeTool }
|
||||||
@ -287,9 +285,13 @@ const
|
|||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
if SearchForProcNode=nil then exit;
|
if SearchForProcNode=nil then exit;
|
||||||
|
if Scanner.CompilerMode=cmOBJFPC then begin
|
||||||
|
Include(SearchForProcAttr,phpWithoutGenericParams);
|
||||||
|
Include(SearchInProcAttr,phpWithoutGenericParams);
|
||||||
|
end;
|
||||||
SearchedProcHead:=ExtractProcHeadWithGroup(SearchForProcNode,SearchForProcAttr);
|
SearchedProcHead:=ExtractProcHeadWithGroup(SearchForProcNode,SearchForProcAttr);
|
||||||
{$IFDEF CTDEBUG}
|
{$IFDEF CTDEBUG}
|
||||||
DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching ',SearchForProcNode.DescAsString,' "',SearchedProcHead.Name,'" ',ProcHeadAttributesToStr(SearchForProcAttr));
|
DebugLn('TMethodJumpingCodeTool.FindJumpPoint.FindBestProcNode Searching ',SearchForProcNode.DescAsString,' "',dbgs(SearchedProcHead),'"');
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
if SearchedProcHead.Name='' then exit;
|
if SearchedProcHead.Name='' then exit;
|
||||||
ProcNode:=FindProcNode(StartNode,SearchedProcHead,SearchInProcAttr);
|
ProcNode:=FindProcNode(StartNode,SearchedProcHead,SearchInProcAttr);
|
||||||
|
@ -350,12 +350,14 @@ begin
|
|||||||
'implementation',
|
'implementation',
|
||||||
'generic class function TBird.{b}Do2It<T>(s: T): T;',
|
'generic class function TBird.{b}Do2It<T>(s: T): T;',
|
||||||
'begin',
|
'begin',
|
||||||
|
' {c}',
|
||||||
'end;',
|
'end;',
|
||||||
'procedure TBird.DoIt;',
|
'procedure TBird.DoIt;',
|
||||||
'begin',
|
'begin',
|
||||||
'end;',
|
'end;',
|
||||||
'end.']);
|
'end.']);
|
||||||
TestJumpToMethod('a',false,'b',false,2);
|
TestJumpToMethod('a',false,'b',false,2);
|
||||||
|
TestJumpToMethod('c',false,'a',false);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTestMethodJumpTool.TestMethodJump_ParamWithAttribute;
|
procedure TTestMethodJumpTool.TestMethodJump_ParamWithAttribute;
|
||||||
|
Loading…
Reference in New Issue
Block a user