summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/tclass13.pp
blob: a1fdb8bbe335e9a3a7c185a8731a1eb966712908 (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
49
50
51
52
53
54
55
56
57
58
program tclass13;

{$ifdef fpc}
  {$mode delphi}{$H+}
{$endif}
{$apptype console}
uses
  typinfo;
type
  TRootClass = class
  public
    type
      TNode = class
      private
        FTest: Integer;
        type
          TNode = class
            FNode: TRootClass.TNode.TNode;
          end;
          en = (e1,e2);
      TOtherNode = class
      public
        type
          TNestedInOtherNode = class
            ffield: longint;
          end;
      end;
      TFinalNode = class
        fx: TRootClass.TOtherNode.TNestedInOtherNode;
      end;
      published
        property Test: Integer read FTest write FTest;
      end;
    class procedure DoTest;
  end;

class procedure TRootClass.DoTest;
var
  Test: TNode;
  Test1: TNode.TNode;
begin
  Test := TNode.Create;
  Test.Test := 1;
  if Test.ClassName <> 'TRootClass.TNode' then
    halt(1);
  Test.Free;
  Test1 := TNode.TNode.Create;
  if Test1.ClassName <> 'TRootClass.TNode.TNode' then
    halt(2);
  Test1.FNode:=Test1;
  Test1.Free;
end;

begin
  TRootClass.DoTest;
  if GetEnumName(TypeInfo(TRootClass.TNode.en), ord(e1))<>'e1' then
    halt(3);
end.