tw40060.pp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. { %NORUN }
  2. program tw40060;
  3. {$mode objfpc}{$H+}
  4. {$modeswitch AnonymousFunctions}
  5. {$modeswitch AdvancedRecords}
  6. uses
  7. sysutils;
  8. type
  9. TSomeRec = record
  10. a: integer;
  11. procedure print;
  12. function text: string;
  13. class procedure main; static;
  14. end;
  15. function some_fun_0: TSomeRec;
  16. begin
  17. result.a := 4;
  18. end;
  19. procedure TSomeRec.print;
  20. begin
  21. writeln('a = ', a);
  22. end;
  23. function TSomeRec.text: string;
  24. begin
  25. result := format('a = %d', [a]);
  26. end;
  27. procedure main;
  28. begin
  29. some_fun_0().print;
  30. (function: TSomeRec begin result.a := 5 end()).print;
  31. writeln((function: TSomeRec begin result.a := 10 end()).text);
  32. end;
  33. class procedure TSomeRec.main; static;
  34. begin
  35. some_fun_0().print;
  36. (function: TSomeRec begin result.a := 5 end()).print;
  37. writeln((function: TSomeRec begin result.a := 10 end()).text);
  38. end;
  39. begin
  40. main;
  41. TSomeRec.main;
  42. end.