blob: eb2b3801f090c71eca6a856f614b4a7bdaa3b9c4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
{$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.
|