mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 12:49:20 +02:00
fcl-passrc: resolver: TResExprEvaluator.OrdValue cna return UInt
git-svn-id: trunk@37579 -
This commit is contained in:
parent
2a57480fff
commit
c96f19339f
@ -566,7 +566,7 @@ type
|
|||||||
procedure EmitRangeCheckConst(id: int64; const aValue: String;
|
procedure EmitRangeCheckConst(id: int64; const aValue: String;
|
||||||
MinVal, MaxVal: MaxPrecInt; PosEl: TPasElement; MsgType: TMessageType = mtWarning);
|
MinVal, MaxVal: MaxPrecInt; PosEl: TPasElement; MsgType: TMessageType = mtWarning);
|
||||||
function ChrValue(Value: TResEvalValue; ErrorEl: TPasElement): TResEvalValue; virtual;
|
function ChrValue(Value: TResEvalValue; ErrorEl: TPasElement): TResEvalValue; virtual;
|
||||||
function OrdValue(Value: TResEvalValue; ErrorEl: TPasElement): TResEvalInt; virtual;
|
function OrdValue(Value: TResEvalValue; ErrorEl: TPasElement): TResEvalValue; virtual;
|
||||||
procedure PredValue(Value: TResEvalValue; ErrorEl: TPasElement); virtual;
|
procedure PredValue(Value: TResEvalValue; ErrorEl: TPasElement); virtual;
|
||||||
procedure SuccValue(Value: TResEvalValue; ErrorEl: TPasElement); virtual;
|
procedure SuccValue(Value: TResEvalValue; ErrorEl: TPasElement); virtual;
|
||||||
function EvalStrFunc(Params: TParamsExpr; Flags: TResEvalFlags): TResEvalValue; virtual;
|
function EvalStrFunc(Params: TParamsExpr; Flags: TResEvalFlags): TResEvalValue; virtual;
|
||||||
@ -3829,7 +3829,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TResExprEvaluator.OrdValue(Value: TResEvalValue; ErrorEl: TPasElement
|
function TResExprEvaluator.OrdValue(Value: TResEvalValue; ErrorEl: TPasElement
|
||||||
): TResEvalInt;
|
): TResEvalValue;
|
||||||
begin
|
begin
|
||||||
case Value.Kind of
|
case Value.Kind of
|
||||||
revkBool:
|
revkBool:
|
||||||
@ -3837,6 +3837,8 @@ begin
|
|||||||
Result:=TResEvalInt.CreateValue(1)
|
Result:=TResEvalInt.CreateValue(1)
|
||||||
else
|
else
|
||||||
Result:=TResEvalInt.CreateValue(0);
|
Result:=TResEvalInt.CreateValue(0);
|
||||||
|
revkInt,revkUInt:
|
||||||
|
Result:=Value;
|
||||||
revkString:
|
revkString:
|
||||||
if length(TResEvalString(Value).S)<>1 then
|
if length(TResEvalString(Value).S)<>1 then
|
||||||
RaiseRangeCheck(20170624160128,ErrorEl)
|
RaiseRangeCheck(20170624160128,ErrorEl)
|
||||||
|
@ -158,9 +158,16 @@ Works:
|
|||||||
- enum: low(), high(), pred(), succ(), ord(), rg(int), int(rg), enum:=rg,
|
- enum: low(), high(), pred(), succ(), ord(), rg(int), int(rg), enum:=rg,
|
||||||
rg:=rg, rg1:=rg2, rg:=enum, =, <>, in
|
rg:=rg, rg1:=rg2, rg:=enum, =, <>, in
|
||||||
array[rg], low(array), high(array)
|
array[rg], low(array), high(array)
|
||||||
|
- for..in..do :
|
||||||
|
- boolean, char, byte, shortint, word, smallint, longword, longint
|
||||||
|
- enum range, char range, integer range
|
||||||
|
- set of enum, enum range, integer, integer range, char, char range
|
||||||
|
|
||||||
ToDo:
|
ToDo:
|
||||||
- for..in..do
|
- for..in..do
|
||||||
|
- array
|
||||||
|
- operator
|
||||||
|
- class
|
||||||
- range checking:
|
- range checking:
|
||||||
- indexedprop[param]
|
- indexedprop[param]
|
||||||
- case-of unique
|
- case-of unique
|
||||||
|
Loading…
Reference in New Issue
Block a user