summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/tbs/tb0356.pp
blob: 6a1645f3307189c667094f8ca799644bc20b8d9a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{$mode objfpc}
type
  tc = class
    left,right: tc;
    function test(var c: tc): boolean;
  end;

  testfunc = function(var c: tc):boolean of object;

  function foreach(var c: tc; p: testfunc): boolean;
    begin
      if not assigned(c) then
        exit;
    end;


  function tc.test(var c: tc): boolean;
  begin
    { if you use @test, the compiler tries to get the address of the }
    { function result instead of the address of the method (JM)       }
    result := foreach(c.left,@self.test);
    result := foreach(c.right,@self.test) or result;
  end;


begin
end.