summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/webtbs/tw3971.pp
blob: 0c7ecddf9c23babed285b7e669ae62edd9cc477b (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
59
60
61
62
63
64
65
66
67
68
69
70
{ Source provided for Free Pascal Bug Report 3971 }
{ Submitted by "Thomas Schatzl" on  2005-05-16 }
{ e-mail:  }
type
        TDemo1 = object
                member1 : byte;
                member2 : longint;
                
                member7 : ^longint;
                member3 : int64;
                
                member4 : byte;
                member5 : longint;
                //x : boolean;
                //
                member6 : int64;
                x : boolean;
        end;
        
        TDemo = object
                member1 : byte;
                member5 : longint;
                member6 : int64;
                y : array[0..2] of TDemo1;

                constructor init;
                destructor Destroy;
                procedure doSomething;
                procedure doSomething2;
        end;
var
        x : array[0..2] of TDemo;
        
        z : TDemo;
        w : TDemo1;

constructor TDemo.init();
begin
        WriteLn('Create start');
        inherited;
        WriteLn('Create end');
end;

destructor TDemo.Destroy();
begin
        WriteLn('Destroy start');
        inherited;
        WriteLn('Destroy end');
end;

procedure TDemo.doSomething;
begin
        WriteLn('doSomething');
end;

procedure TDemo.doSomething2;
begin
        WriteLn('doSomething');
end;


begin
        z.init;
        if ((ptrint(@z.y)-ptrint(@z)) mod sizeof(ptrint))<>0 then
          halt(1);
        if ((ptrint(@z.y[0].member7)-ptrint(@z)) mod sizeof(ptrint))<>0 then
          halt(1);
        z.destroy;
        WriteLn(sizeof(TDemo), ' ', sizeof(TDemo1));
end.