t_chain.mod 573 B

12345678910111213141516171819202122232425
  1. MODULE TChain;
  2. (* Chained post-call method call on a class result (`Mk(7).Get()`) and a
  3. field of a class result (`Mk(8).x`). Exit 42. *)
  4. VAR ExitCode, got : INTEGER;
  5. TYPE
  6. CLASS C;
  7. x : INTEGER;
  8. PROCEDURE Get () : INTEGER;
  9. END C;
  10. CLASS IMPLEMENTATION C;
  11. PROCEDURE Get () : INTEGER; BEGIN RETURN x END Get;
  12. END C;
  13. PROCEDURE Mk (v : INTEGER) : C;
  14. VAR q : C;
  15. BEGIN q.x := v; RETURN q END Mk;
  16. BEGIN
  17. got := 0;
  18. IF Mk(7).Get() = 7 THEN INC(got) END;
  19. IF Mk(8).x = 8 THEN INC(got) END;
  20. IF got = 2 THEN ExitCode := 42 ELSE ExitCode := got END
  21. END TChain.