fpc/tests/test/tanonfunc15.pp

33 lines
557 B
ObjectPascal

program tanonfunc15;
{$mode objfpc}{$H+}
{$modeswitch anonymousfunctions}
{$modeswitch functionreferences}
{ "ClassName" inside an anonymous function inside a method returns the
"ClassName" of the surrounding class }
type
tstrfunc = reference to function : string;
TTest = class
function Test: tstrfunc;
end;
function TTest.Test: tstrfunc;
begin
Result := function: string begin result := classname; end;
end;
var
f: tstrfunc;
t: TTest;
begin
t := TTest.Create;
f := t.Test;
if f() <> 'TTest' then
Halt(1);
t.Free;
end.