diff --git a/components/codetools/codetree.pas b/components/codetools/codetree.pas index fd13e878ed..d5f4a3d277 100644 --- a/components/codetools/codetree.pas +++ b/components/codetools/codetree.pas @@ -258,6 +258,7 @@ type function GetTopMostNodeOfType(ADesc: TCodeTreeNodeDesc): TCodeTreeNode; function GetFindContextParent: TCodeTreeNode; function GetLevel: integer; + function GetLastNode: TCodeTreeNode; function DescAsString: string; function FindOwner: TObject; procedure Clear; @@ -281,6 +282,7 @@ type function FindLastPosition: integer; function ContainsNode(ANode: TCodeTreeNode): boolean; function FindRootNode(Desc: TCodeTreeNodeDesc): TCodeTreeNode; + function GetLastNode: TCodeTreeNode; procedure Clear; constructor Create; destructor Destroy; override; @@ -858,6 +860,13 @@ begin end; end; +function TCodeTreeNode.GetLastNode: TCodeTreeNode; +begin + Result:=Self; + while Result.LastChild<>nil do + Result:=Result.LastChild; +end; + function TCodeTreeNode.DescAsString: string; begin if Self=nil then @@ -1006,6 +1015,13 @@ begin Result:=Result.NextBrother; end; +function TCodeTree.GetLastNode: TCodeTreeNode; +begin + Result:=Root; + if Result=nil then exit; + Result:=Result.GetLastNode; +end; + procedure TCodeTree.ConsistencyCheck; var RealNodeCount: integer; diff --git a/components/codetools/pascalparsertool.pas b/components/codetools/pascalparsertool.pas index b632723752..05d6f348aa 100644 --- a/components/codetools/pascalparsertool.pas +++ b/components/codetools/pascalparsertool.pas @@ -814,7 +814,8 @@ begin finally FRangeValidTill:=ScannedRange; {$IFDEF VerboseUpdateNeeded} - debugln(['TPascalParserTool.BuildTree scanned till ',dbgs(FRangeValidTill),' (wanted:',dbgs(ScanTill),') Atom="',dbgstr(GetAtom),'" at ',CleanPosToStr(CurPos.StartPos)]); + Node:=Tree.GetLastNode; + debugln(['TPascalParserTool.BuildTree scanned till ',dbgs(FRangeValidTill),' (wanted:',dbgs(ScanTill),') Atom="',dbgstr(GetAtom),'" at ',CleanPosToStr(CurPos.StartPos),' LastNode=',Node.DescAsString,',Start=',Node.StartPos]); {$ENDIF} ScanTill:=lsrEnd; CloseUnfinishedNodes;