toperator11.pp 598 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. program toperator11;
  2. {$mode objfpc}{$H+}
  3. {$apptype console}
  4. type
  5. TFoo = record
  6. F: Integer;
  7. end;
  8. operator Inc(a: TFoo): TFoo;
  9. begin
  10. Result.F := a.F + 1;
  11. end;
  12. operator Dec(a: TFoo): TFoo;
  13. begin
  14. Result.F := a.F - 1;
  15. end;
  16. operator :=(a: TFoo): Integer;
  17. begin
  18. Result := a.F;
  19. end;
  20. operator explicit(a: TFoo): Integer;
  21. begin
  22. Result := a.F + 1;
  23. end;
  24. var
  25. a: TFoo;
  26. i: Integer;
  27. begin
  28. a.F := 1;
  29. inc(a);
  30. if a.F <> 2 then
  31. halt(1);
  32. dec(a);
  33. if a.F <> 1 then
  34. halt(2);
  35. i := a;
  36. if i <> 1 then
  37. halt(3);
  38. if Integer(a) <> 2 then
  39. halt(4);
  40. WriteLn('ok');
  41. end.