summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/tforin3.pp
blob: e38a5e96e4bbe2480c09e596ae4d3c0394ee68dd (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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
program tforin3;

// check for-in loop if GetEnumerator returns nil

{$mode objfpc}{$H+}
{$APPTYPE CONSOLE}

type

  { TListEnumerator }

  TListEnumerator = class
  private
    FCurrent: String;
  public
    function MoveNext: Boolean;
    property Current: String read FCurrent;
  end;

  TMyList = class
  public
    function GetEnumerator: TListEnumerator;
  end;

{ TListEnumerator }

function TListEnumerator.MoveNext: Boolean;
begin
  Result := True;
end;

{ TMyList }

function TMyList.GetEnumerator: TListEnumerator;
begin
  Result := nil;
end;

var
  S: String;
  L: TMyList;
begin
  L := TMyList.Create;
  for S in L do
    ;
  L.Free;
end.