Note to self: Delphi’s Advanced Records are also available in Lazarus / Free Pascal, but only if they have been explicitly enabled with the modeswitch compiler directive:
unit SomeUnit; {$mode objfpc}{$H+}{$modeswitch advancedrecords} interface type TSomeRecord = record FSomeField: integer; function SomeMethod: integer; end; implementation function TSomeRecord.SomeMethod: integer; begin Result := FSomeField; end; end.
If advancedrecords is not enabled this won’t compile:
Fatal: Syntax error: “END” expected but “FUNCTION” found.