Fix for function Val to validate the parameter count of the function.

This commit is contained in:
Henrique Gottardi Werlang 2023-12-01 16:24:06 -03:00 committed by Michael Van Canneyt
parent 34ae77bd3b
commit 8a8699ab6a

View File

@ -5882,19 +5882,24 @@ var
C: TClass;
begin
Result:=inherited;
Params:=TParamsExpr(Expr);
Param:=Params.Params[1];
ComputeElement(Param,ParamResolved,[]);
Result:=cIncompatible;
bt:=ParamResolved.BaseType;
if bt=btRange then
bt:=ParamResolved.SubType;
if bt=btContext then
begin
C:=ParamResolved.LoTypeEl.ClassType;
if (C=TPasEnumType) or (C=TPasRangeType) then
Result:=cExact
end;
if CheckBuiltInMinParamCount(Proc, Expr, 3, RaiseOnError) then
begin
Params:=TParamsExpr(Expr);
Param:=Params.Params[1];
ComputeElement(Param,ParamResolved,[]);
Result:=cIncompatible;
bt:=ParamResolved.BaseType;
if bt=btRange then
bt:=ParamResolved.SubType;
if bt=btContext then
begin
C:=ParamResolved.LoTypeEl.ClassType;
if (C=TPasEnumType) or (C=TPasRangeType) then
Result:=cExact
end;
end;
if Result=cIncompatible then
exit(CheckRaiseTypeArgNo(20181214142349,2,Param,ParamResolved,
'enum variable',RaiseOnError));