|
@@ -1316,6 +1316,7 @@ var
|
|
Bin: TBinaryExpr;
|
|
Bin: TBinaryExpr;
|
|
Params: TParamsExpr;
|
|
Params: TParamsExpr;
|
|
ValueResolved: TPasResolverResult;
|
|
ValueResolved: TPasResolverResult;
|
|
|
|
+ Unary: TUnaryExpr;
|
|
begin
|
|
begin
|
|
C:=Expr.ClassType;
|
|
C:=Expr.ClassType;
|
|
if C=TBinaryExpr then
|
|
if C=TBinaryExpr then
|
|
@@ -1353,6 +1354,14 @@ begin
|
|
UseElement(Ref.Declaration,Access,UseFull);
|
|
UseElement(Ref.Declaration,Access,UseFull);
|
|
end;
|
|
end;
|
|
end
|
|
end
|
|
|
|
+ else if C=TUnaryExpr then
|
|
|
|
+ begin
|
|
|
|
+ Unary:=TUnaryExpr(Expr);
|
|
|
|
+ if Unary.OpCode in [eopAdd,eopSubtract,eopAddress,eopDeref,eopMemAddress] then
|
|
|
|
+ UseExprRef(El,Unary.Operand,rraRead,false)
|
|
|
|
+ else
|
|
|
|
+ RaiseNotSupported(20181015193334,Expr,OpcodeStrings[Unary.OpCode]);
|
|
|
|
+ end
|
|
else if (Access=rraRead)
|
|
else if (Access=rraRead)
|
|
and ((C=TPrimitiveExpr) // Kind<>pekIdent
|
|
and ((C=TPrimitiveExpr) // Kind<>pekIdent
|
|
or (C=TNilExpr)
|
|
or (C=TNilExpr)
|
|
@@ -1364,7 +1373,7 @@ begin
|
|
{$IFDEF VerbosePasResolver}
|
|
{$IFDEF VerbosePasResolver}
|
|
writeln('TPasResolver.UseExprRef Expr=',GetObjName(Expr),' Access=',Access,' Declaration="',Expr.GetDeclaration(false),'"');
|
|
writeln('TPasResolver.UseExprRef Expr=',GetObjName(Expr),' Access=',Access,' Declaration="',Expr.GetDeclaration(false),'"');
|
|
{$ENDIF}
|
|
{$ENDIF}
|
|
- RaiseNotSupported(20170306102158,Expr);
|
|
|
|
|
|
+ RaiseNotSupported(20170306102159,Expr);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|