123456789101112131415161718192021222324252627282930313233343536373839 |
- {$mode objfpc}
- {$R+}
- type Tconstexprint=record
- overflow:boolean;
- case signed:boolean of
- false:
- (uvalue:qword);
- true:
- (svalue:int64);
- end;
- operator := (const u:qword):Tconstexprint;
- begin
- if (u<>high(int64)+100) then
- halt(1);
- result.overflow:=false;
- result.signed:=false;
- result.uvalue:=u;
- end;
- operator := (const s:int64):Tconstexprint;
- begin
- if (s<>-128) then
- halt(2);
- result.overflow:=false;
- result.signed:=true;
- result.svalue:=s;
- end;
- var
- value : tconstexprint;
- begin
- // Here it should choose the int64 code instead of qword
- value:=-128;
- // Here it should choose the qword
- value:=high(int64)+100;
- end.
|