codetools: GetExpandedOperand: typecast

git-svn-id: trunk@32296 -
This commit is contained in:
mattias 2011-09-11 20:57:31 +00:00
parent 36dc00ab92
commit 871b285d8f
3 changed files with 21 additions and 3 deletions

View File

@ -44,7 +44,7 @@ var
begin
Filename:='scanexamples/getterexample1.pas';
X:=14;
Y:=53;
Y:=56;
if (ParamCount>=1) and (Paramcount<3) then begin
writeln('Usage:');
writeln(' ',ParamStr(0));

View File

@ -26,6 +26,7 @@ type
function GetBar: integer; override;
public
procedure DoSomething;
function GetOldest(Older: TOlder): TOldest;
end;
implementation
@ -49,9 +50,15 @@ var
Older: TOlder;
begin
Older:=TOlder.Create;
with TOlder(Older) do begin
with TOlder(Older) do
writeln(Bar);
end;
with Older.GetOldest(Self) do
writeln(Bar);
end;
function TOlder.GetOldest(Older: TOlder): TOldest;
begin
Result:=Older;
end;
end.

View File

@ -7343,6 +7343,17 @@ var
{$IFDEF ShowExprEval}
debugln([' FindExpressionTypeOfTerm ResolveRoundBracketOpen skip typecast/paramlist="',dbgstr(Src,CurAtom.StartPos,CurAtomBracketEndPos-CurAtom.StartPos),'"']);
{$ENDIF}
if fdfExtractOperand in Params.Flags then begin
if ExprType.Context.Node.Desc=ctnTypeDefinition then begin
// typecast
Params.AddOperandPart(GetIdentifier(@Src[ExprType.Context.Node.StartPos]));
Params.AddOperandPart('(');
// assumption: one term in brakets
FindExpressionTypeOfTerm(CurAtom.StartPos+1,CurAtomBracketEndPos-1,
Params,false);
Params.AddOperandPart(')');
end;
end;
end else begin
// expression
{$IFDEF ShowExprEval}