123456789101112131415161718192021222324252627282930313233343536373839 |
- { this tests that the correct method is called if a helper overloads an
- existing function and calls the original one recursively }
- program thlp45;
- {$mode objfpc}{$H+}
- type
- TTest = class
- function Test(aRecurse: Boolean; aTest: String): Integer;
- end;
- TTestHelper = class helper for TTest
- function Test(aRecurse: Boolean; aTest: array of String): Integer; overload;
- end;
- function TTest.Test(aRecurse: Boolean; aTest: String): Integer;
- begin
- Result := 1;
- end;
- function TTestHelper.Test(aRecurse: Boolean; aTest: array of String): Integer;
- begin
- if aRecurse then
- Result := Test(False, aTest[0])
- else
- Result := 2;
- end;
- var
- t: TTest;
- res: Integer;
- begin
- t := TTest.Create;
- res := t.Test(True, ['Test']);
- Writeln('t.Test: ', res);
- if res <> 1 then
- Halt(1);
- Writeln('ok');
- end.
|