fpc/tests/webtbs/tw25030.pp

54 lines
1.1 KiB
ObjectPascal

program tw25030;
{$MODE DELPHI}
type
{ TInteger32Boolean }
TInteger32Boolean = record
public
Value: Integer;
const
FALSE = 0;
TRUE = 1;
class operator Implicit(const Operand: TInteger32Boolean): Boolean;
class operator Implicit(Operand: Boolean): TInteger32Boolean;
class operator LogicalNot(const Operand: TInteger32Boolean): TInteger32Boolean;
end;
{ TInteger32Boolean }
class operator TInteger32Boolean.Implicit(const Operand: TInteger32Boolean): Boolean;
begin
Result := Operand.Value <> FALSE;
end;
class operator TInteger32Boolean.Implicit(Operand: Boolean): TInteger32Boolean;
begin
if Operand then
Result.Value := TRUE
else
Result.Value := FALSE;
end;
class operator TInteger32Boolean.LogicalNot(const Operand: TInteger32Boolean): TInteger32Boolean;
begin
if Operand then
Result.Value := FALSE
else
Result.Value := TRUE;
end;
var
IntegerBoolean: TInteger32Boolean;
begin
IntegerBoolean := True;
if IntegerBoolean.Value<>1 then
halt(1);
if not IntegerBoolean then
halt(2);
end.