bug0261a.pp 945 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. unit bug0261a;
  2. { test for operator overloading }
  3. { Copyright (c) 1999 Lourens Veen }
  4. { why doesn't this work? }
  5. interface
  6. type mythingy = record
  7. x, y : longint;
  8. c : byte;
  9. end;
  10. myotherthingy = record
  11. x, y : longint;
  12. d : byte;
  13. end;
  14. mythirdthingy = record
  15. x, y : longint;
  16. e : byte;
  17. end;
  18. mynewthingy = record
  19. x, y : longint;
  20. e,f : byte;
  21. end;
  22. operator := (a : mythingy) r : myotherthingy;
  23. operator := (a : mythingy) r : mythirdthingy;
  24. operator = (b : myotherthingy;c : mythirdthingy) res : boolean;
  25. implementation
  26. operator := (a : mythingy) r : myotherthingy;
  27. begin
  28. r.x := a.x;
  29. r.y := a.y;
  30. r.d := a.c;
  31. end;
  32. operator := (a : mythingy) r : mythirdthingy;
  33. begin
  34. r.x := a.x;
  35. r.y := a.y;
  36. r.e := a.c;
  37. end;
  38. operator = (b : myotherthingy;c : mythirdthingy) res : boolean;
  39. begin
  40. res:=(b.x=c.x) and (b.y=c.y) and (b.d=c.e);
  41. end;
  42. end.