summaryrefslogtreecommitdiff
path: root/fpcsrc/tests/test/cg/tloadvmt.pp
blob: e5f37316775046ee7881c0d9ff3cefbd5a7e61fd (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
{****************************************************************}
{  CODE GENERATOR TEST PROGRAM                                   }
{  By Carl Eric Codere                                           }
{****************************************************************}
{ NODE TESTED : secondloadvmt()                                  }
{****************************************************************}
{ DEFINES:                                                       }
{            FPC     = Target is FreePascal compiler             }
{****************************************************************}
{ REMARKS : Tested with Delphi 3 as reference implementation     }
{****************************************************************}
program tloadvmt;

{$ifdef fpc}
{$mode objfpc}
{$endif}

const
  RESULT_STRING = 'Hello world';

Type
  TAObject = class(TObject)
    a : longint;
    end;
  TBObject = Class(TAObject)
    b : longint;
    s : shortstring;
      constructor create(c: longint);
      function getstring : shortstring;
    end;


    procedure fail;
    begin
      WriteLn('Failure.');
      halt(1);
    end;


 constructor tbobject.create(c:longint);
  begin
    taobject.create;
    b:=c;
    s:=RESULT_STRING;
  end;

 function tbobject.getstring : shortstring;
  begin
    getstring := s;
  end;


var
 bobj: TBobject;
 i: integer;
 l : longint;
Begin
  i:=$7f;
  Write('Secondloadvmt test...');
  bobj:=TBobject.create(i);
  if bobj.getstring <> RESULT_STRING then
    fail
  else
    WriteLn('Success!');
end.