|
@@ -1850,7 +1850,7 @@ begin
|
|
PClose:=tkBraceClose;
|
|
PClose:=tkBraceClose;
|
|
end;
|
|
end;
|
|
|
|
|
|
- params:=TParamsExpr(CreateElement(TParamsExpr,'',AParent));
|
|
|
|
|
|
+ params:=TParamsExpr(CreateElement(TParamsExpr,'',AParent,CurTokenPos));
|
|
try
|
|
try
|
|
params.Kind:=paramskind;
|
|
params.Kind:=paramskind;
|
|
NextToken;
|
|
NextToken;
|
|
@@ -2061,7 +2061,8 @@ begin
|
|
NextToken;
|
|
NextToken;
|
|
if (CurToken=tkIdentifier) then
|
|
if (CurToken=tkIdentifier) then
|
|
begin
|
|
begin
|
|
- b:=CreateBinaryExpr(AParent,Last, DoParseExpression(AParent), eopNone);
|
|
|
|
|
|
+ SrcPos:=CurTokenPos;
|
|
|
|
+ b:=CreateBinaryExpr(AParent,Last, DoParseExpression(AParent), eopNone,SrcPos);
|
|
if not Assigned(b.right) then
|
|
if not Assigned(b.right) then
|
|
begin
|
|
begin
|
|
b.Release;
|
|
b.Release;
|
|
@@ -2328,18 +2329,17 @@ begin
|
|
x:=CreateUnaryExpr(AParent,x, TokenToExprOp(tkCaret));
|
|
x:=CreateUnaryExpr(AParent,x, TokenToExprOp(tkCaret));
|
|
NextToken;
|
|
NextToken;
|
|
end;
|
|
end;
|
|
- // ToDo: move dot below []
|
|
|
|
|
|
+ // for expressions like (PChar(a)+10)[0];
|
|
|
|
+ if (x<>Nil) and (CurToken=tkSquaredBraceOpen) then
|
|
|
|
+ begin
|
|
|
|
+ x:=ParseParams(x,pekArrayParams,False);
|
|
|
|
+ end;
|
|
// for expressions like (TObject(m)).Free;
|
|
// for expressions like (TObject(m)).Free;
|
|
if (x<>Nil) and (CurToken=tkDot) then
|
|
if (x<>Nil) and (CurToken=tkDot) then
|
|
begin
|
|
begin
|
|
NextToken;
|
|
NextToken;
|
|
x:=CreateBinaryExpr(AParent,x, ParseExpIdent(AParent), TokenToExprOp(tkDot));
|
|
x:=CreateBinaryExpr(AParent,x, ParseExpIdent(AParent), TokenToExprOp(tkDot));
|
|
end;
|
|
end;
|
|
- // for expressions like (PChar(a)+10)[0];
|
|
|
|
- if (x<>Nil) and (CurToken=tkSquaredBraceOpen) then
|
|
|
|
- begin
|
|
|
|
- x:=ParseParams(x,pekArrayParams,False);
|
|
|
|
- end;
|
|
|
|
end
|
|
end
|
|
else
|
|
else
|
|
begin
|
|
begin
|