mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 15:47:53 +02:00
46 lines
699 B
ObjectPascal
46 lines
699 B
ObjectPascal
program tanonfunc43;
|
|
|
|
{$mode objfpc}
|
|
{$modeswitch anonymousfunctions}
|
|
{$modeswitch functionreferences}
|
|
|
|
{ test capturing record and array variables }
|
|
|
|
type
|
|
TIntFunc = reference to function: Integer;
|
|
|
|
function TestCaptureArray: TIntFunc;
|
|
var
|
|
A: array[0..15] of Integer;
|
|
begin
|
|
Result := function: Integer
|
|
begin
|
|
Result := A[0] + A[1];
|
|
end;
|
|
A[0] := 1;
|
|
A[1] := 2;
|
|
end;
|
|
|
|
function TestCaptureRecord: TIntFunc;
|
|
var
|
|
R: record
|
|
I1, I2: Integer;
|
|
end;
|
|
begin
|
|
Result := function: Integer
|
|
begin
|
|
Result := R.I1 + R.I2;
|
|
end;
|
|
R.I1 := 1;
|
|
R.I2 := 2;
|
|
end;
|
|
|
|
begin
|
|
if TestCaptureArray()() <> 3 then
|
|
Halt(1);
|
|
|
|
if TestCaptureRecord()() <> 3 then
|
|
Halt(2);
|
|
end.
|
|
|