From 174015662d083ff4622b9b613e3ed0edd1301386 Mon Sep 17 00:00:00 2001 From: mattias Date: Fri, 16 Oct 2015 17:45:47 +0000 Subject: [PATCH] codetools: fixed resolve first identifier in term git-svn-id: trunk@50085 - --- components/codetools/finddeclarationtool.pas | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/components/codetools/finddeclarationtool.pas b/components/codetools/finddeclarationtool.pas index da033bcfde..32a67b69a5 100644 --- a/components/codetools/finddeclarationtool.pas +++ b/components/codetools/finddeclarationtool.pas @@ -8051,7 +8051,7 @@ var end; // find sub identifier if not IdentFound then begin - if ExprType.Desc<>xtContext then + if not (ExprType.Desc in [xtContext,xtNone]) then begin if (ExprType.Desc in xtAllTypeHelperTypes) then begin @@ -8072,7 +8072,7 @@ var ExprType.Context.Tool := Params.NewCodeTool; ExprType.Context.Node := Params.NewNode; {$IFDEF ShowExprEval} - debugln(['ResolveIdentifier Found In Helper: "',ExprTypeToString(ExprType),'"']); + debugln(['ResolveIdentifier "',GetAtom(CurAtom),'" Found In Helper: "',ExprTypeToString(ExprType),'"']); {$ENDIF} end else begin {$IFDEF ShowExprEval} @@ -8082,7 +8082,7 @@ var Params.Load(OldInput,true); end; - if ExprType.Desc<>xtContext then begin + if ExprType.Desc in xtAllPredefinedTypes then begin ExprType:=FindExpressionTypeOfPredefinedIdentifier(CurAtom.StartPos, Params); {$IFDEF CheckNodeTool} @@ -8090,12 +8090,15 @@ var ExprType.Context.Tool.CheckNodeTool(ExprType.Context.Node); {$ENDIF} {$IFDEF ShowExprEval} - debugln(['ResolveIdentifier Predefined: ',ExprType.Desc in xtAllTypeHelperTypes]); + debugln(['ResolveIdentifier Predefined "',GetAtom(CurAtom),'" : ',ExprType.Desc in xtAllTypeHelperTypes]); {$ENDIF} end; end else begin - Context:=ExprType.Context; + if ExprType.Desc=xtContext then + Context:=ExprType.Context + else + Context:=CreateFindContext(Self,StartNode); Params.Save(OldInput); // build new param flags for sub identifiers Params.Flags:=[fdfSearchInAncestors,fdfExceptionOnNotFound,fdfSearchInHelpers] @@ -8128,7 +8131,7 @@ var // search ... {$IFDEF ShowExprEval} - Dbgout([' FindExpressionTypeOfTerm ResolveIdentifier backward ',BoolToStr(IsStart,'Main','Sub'),'Ident="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); + Dbgout([' FindExpressionTypeOfTerm ResolveIdentifier "',GetAtom(CurAtom),'" backward ',BoolToStr(IsStart,'Main','Sub'),'Ident="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); {$ENDIF} ExprType.Desc:=xtNone; // first search backwards @@ -8143,7 +8146,7 @@ var +(fdfGlobals*Params.Flags); Params.ContextNode:=Context.Node; {$IFDEF ShowExprEval} - DebugLn([' FindExpressionTypeOfTerm ResolveIdentifier forward SubIdent="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); + DebugLn([' FindExpressionTypeOfTerm ResolveIdentifier "',GetAtom(CurAtom),'" forward SubIdent="',GetIdentifier(Params.Identifier),'" ContextNode="',Params.ContextNode.DescAsString,'" "',dbgstr(Context.Tool.Src,Params.ContextNode.StartPos,15),'" ',dbgs(Params.Flags)]); {$ENDIF} if FindIdentifierInContext(Params) then begin ExprType.Desc:=xtContext;