diff --git a/components/codetools/basiccodetools.pas b/components/codetools/basiccodetools.pas index fd51098a97..f30a1f3dd5 100644 --- a/components/codetools/basiccodetools.pas +++ b/components/codetools/basiccodetools.pas @@ -2503,13 +2503,10 @@ function CompareTextIgnoringSpace(Txt1: PChar; Len1: integer; A; A -1 } var P1, P2: integer; - InIdentifier: boolean; begin P1:=0; P2:=0; - InIdentifier:=false; while (P1nil do begin - DebugLn(' AAA ',TCodeTreeNodeExtension(AnAVLNode.Data).Txt); + DebugLn(' Existing proc headers: ',TCodeTreeNodeExtension(AnAVLNode.Data).Txt); AnAVLNode:=ClassProcs.FindSuccessor(AnAVLNode); end;} @@ -5752,7 +5753,7 @@ begin ANodeExt:=TCodeTreeNodeExtension(MissingNode.Data); CreateCodeForMissingProcBody(ANodeExt); InsertProcBody(ANodeExt); - MissingNode:=ProcBodyNodes.FindPrecessor(MissingNode); + MissingNode:=ClassProcs.FindPrecessor(MissingNode); end; end else begin @@ -5771,9 +5772,10 @@ begin MissingNode:=ClassProcs.FindHighest; NearestNodeValid:=false; while (MissingNode<>nil) do begin + ANodeExt:=TCodeTreeNodeExtension(MissingNode.Data); ExistingNode:=ProcBodyNodes.Find(MissingNode.Data); + //DebugLn(['TCodeCompletionCodeTool.CreateMissingProcBodies ANodeExt.Txt=',ANodeExt.Txt,' ExistingNode=',ExistingNode<>nil]); if ExistingNode=nil then begin - ANodeExt:=TCodeTreeNodeExtension(MissingNode.Data); // MissingNode does not have a body -> insert proc body case MethodInsertPolicy of mipAlphabetically: @@ -5841,7 +5843,7 @@ begin CreateCodeForMissingProcBody(ANodeExt); InsertProcBody(ANodeExt); end; - MissingNode:=ProcBodyNodes.FindPrecessor(MissingNode); + MissingNode:=ClassProcs.FindPrecessor(MissingNode); end; end; Result:=true; diff --git a/components/codetools/codetree.pas b/components/codetools/codetree.pas index c2dae923d8..ebd0e451d7 100644 --- a/components/codetools/codetree.pas +++ b/components/codetools/codetree.pas @@ -312,6 +312,7 @@ var //----------------------------------------------------------------------------- // useful functions function NodeDescriptionAsString(Desc: TCodeTreeNodeDesc): string; +procedure WriteNodeExtTree(Tree: TAVLTree); function FindCodeTreeNodeExt(Tree: TAVLTree; const Txt: string ): TCodeTreeNodeExtension; function FindCodeTreeNodeExtAVLNode(Tree: TAVLTree; const Txt: string @@ -438,6 +439,27 @@ begin end; end; +procedure WriteNodeExtTree(Tree: TAVLTree); +var + Node: TAVLTreeNode; + NodeExt: TCodeTreeNodeExtension; +begin + if Tree=nil then begin + DebugLn(['WriteNodeExtTree Tree=nil']); + exit; + end; + DebugLn(['WriteNodeExtTree ']); + Node:=Tree.FindLowest; + while Node<>nil do begin + NodeExt:=TCodeTreeNodeExtension(Node.Data); + if NodeExt=nil then + DebugLn([' NodeExt=nil']) + else + NodeExt.WriteDebugReport; + Node:=Tree.FindSuccessor(Node); + end; +end; + function FindCodeTreeNodeExt(Tree: TAVLTree; const Txt: string ): TCodeTreeNodeExtension; var @@ -927,6 +949,13 @@ end; procedure TCodeTreeNodeExtension.WriteDebugReport; begin // nothing special + DbgOut(' '); + if Node<>nil then + DbgOut('Node=',NodeDescriptionAsString(Node.Desc)) + else + DbgOut('Node=nil'); + DbgOut(' Position=',dbgs(Position),' Txt="'+Txt+'" ExtTxt1="'+ExtTxt1+'" ExtTxt2="'+ExtTxt2+'" ExtTxt3="'+ExtTxt3+'"'); + debugln; end; { TCodeTreeNodeMemManager }