codetools: fixed resolving dot after pointer in mode delphi

git-svn-id: trunk@50101 -
This commit is contained in:
mattias 2015-10-18 13:38:49 +00:00
parent a5c1278946
commit 0075408ba2
3 changed files with 20 additions and 5 deletions

1
.gitattributes vendored
View File

@ -1016,6 +1016,7 @@ components/codetools/tests/laztests/bug28861_unit2.pas svneol=native#text/plain
components/codetools/tests/laztests/bug28866_prg.pas svneol=native#text/plain
components/codetools/tests/laztests/bug28866_unit1.pas svneol=native#text/plain
components/codetools/tests/laztests/bug28876.pas svneol=native#text/plain
components/codetools/tests/laztests/delphi_autodereference1.pas svneol=native#text/plain
components/codetools/tests/laztests/tdefaultproperty1.pas svneol=native#text/plain
components/codetools/tests/parsertbase.pas svneol=native#text/plain
components/codetools/tests/parsertest.lpi svneol=native#text/plain

View File

@ -8257,7 +8257,7 @@ var
if (ExprType.Context.Node=nil) then exit;
if (ExprType.Context.Node.Desc in AllUsableSourceTypes) then begin
if ExprType.Context.Tool=Self then begin
// this unit name => implementation
// unit name of this unit => implementation
// Note: allowed for programs too
NewNode:=Tree.Root;
if NewNode.Desc=ctnUnit then begin
@ -8270,7 +8270,7 @@ var
{$ENDIF}
ExprType.Context.Node:=NewNode;
end else begin
// unit name => interface
// unit name of another unit => interface
{$IFDEF ShowExprEval}
debugln([' FindExpressionTypeOfTerm ResolveChildren unit -> interface node']);
{$ENDIF}
@ -8293,9 +8293,7 @@ var
// -> check for pointer type
// left side of expression has defined a special context
// => this '.' is a dereference
ExprType.Desc:=xtContext;
Params.Flags:=Params.Flags+[fdfFunctionResult,fdfFindChildren];
ExprType.Context.Node:=ExprType.Context.Node.FirstChild;
ExprType.Context:=ExprType.Context.Tool.FindBaseTypeOfNode(Params,ExprType.Context.Node.FirstChild);
end;
end;

View File

@ -0,0 +1,16 @@
program delphi_autodereference1;
{$mode Delphi}
type
TRec = record
v: char;
end;
PRec = ^TRec;
var
p: PRec;
begin
p.v{declaration:TRec.v};
end.