tw1123.pp 515 B

123456789101112131415161718192021222324252627282930
  1. TYPE PObj = ^TObj;
  2. TObj = OBJECT
  3. ii : INTEGER;
  4. CONSTRUCTOR Init(i :INTEGER);
  5. DESTRUCTOR Done;
  6. END;
  7. CONSTRUCTOR TObj.Init(i :INTEGER);
  8. BEGIN
  9. ii := i;
  10. END;
  11. DESTRUCTOR TObj.Done;
  12. BEGIN
  13. END;
  14. VAR Obj : ARRAY[1..2] OF TObj;
  15. BEGIN
  16. Obj[1].Init(10);
  17. WITH Obj[2] DO Init(Obj[1].ii + 1); (* equal Init(0+1) = wrong *)
  18. Writeln;
  19. Writeln(Obj[1].ii:10);
  20. Writeln(Obj[2].ii:10);
  21. if Obj[2].ii<>11 then
  22. halt(1);
  23. (* this should report 10 and 11, when ok *)
  24. END.