cody: find gdb line: find sub proc

git-svn-id: trunk@44959 -
This commit is contained in:
mattias 2014-05-07 09:38:37 +00:00
parent 63c846780c
commit 3173fc6641

View File

@ -360,6 +360,8 @@ procedure TCodyFindGDBLineDialog.FindGDBIdentifier(GDBIdentifier: string; out
MAIN_TMAINIDE_$__CREATE$TCOMPONENT$$TMAINIDE MAIN_TMAINIDE_$__CREATE$TCOMPONENT$$TMAINIDE
program: program:
P$TESTPROJECT1_DOTEST
P$TESTPROJECT1_DOTEST_SUBTEST
P$TESTSTACKTRACE1_TMAINCLASS_$_TSUBCLASS_$__RAISESOMETHING$ANSISTRING P$TESTSTACKTRACE1_TMAINCLASS_$_TSUBCLASS_$__RAISESOMETHING$ANSISTRING
} }
var var
@ -475,24 +477,30 @@ begin
exit; exit;
end; end;
while (p^='_') and (p[1]='$') and (p[2]='_') and (p[3]='_') do begin repeat
inc(p,4); if (p^='_') and (p[1]='$') and (p[2]='_') and (p[3]='_') then begin
if p^ in ['A'..'Z'] then begin // sub identifier is method or member
// _$__identifier => sub identifier inc(p,4);
ReadIdentifier(CurIdentifier); end else if (p^='_') and (p[1] in ['A'..'Z']) then begin
// find sub identifier // sub identifier is proc
SubNode:=Tool.FindSubDeclaration(CurIdentifier,Node); inc(p);
if SubNode=nil then begin end else
debugln(['TCodyFindGDBLineDialog.FindGDBIdentifier SubIdentifier="',CurIdentifier,'" not found']); break;
break; if not (p^ in ['A'..'Z']) then begin
end else begin
debugln(['TCodyFindGDBLineDialog.FindGDBIdentifier SubIdentifier="',CurIdentifier,'" found']);
Node:=SubNode;
end;
end else begin
break; break;
end; end;
end; // _$__identifier => sub identifier
ReadIdentifier(CurIdentifier);
// find sub identifier
SubNode:=Tool.FindSubDeclaration(CurIdentifier,Node);
if SubNode=nil then begin
debugln(['TCodyFindGDBLineDialog.FindGDBIdentifier SubIdentifier="',CurIdentifier,'" not found']);
break;
end else begin
debugln(['TCodyFindGDBLineDialog.FindGDBIdentifier SubIdentifier="',CurIdentifier,'" found']);
Node:=SubNode;
end;
until false;
if Node.Desc=ctnProcedure then begin if Node.Desc=ctnProcedure then begin
// proc node => find body // proc node => find body