summaryrefslogtreecommitdiff
path: root/tests/tbs/tb0163.pp
blob: 735a58584a2c43e17035b199f6d7796d90235865 (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
{ Old file: tbs0194.pp }
{ @procedure var returns value in it instead of address !! OK 0.99.11 (PM) }

{$Q+}

type
   tproc = function : longint;

var
   f : tproc;
   fa : array [0..1] of tproc;

   function dummy : longint;
     begin
        dummy:=25;
     end;
const
   prog_has_errors : boolean = false;

   procedure Wrong(const s : string);
     begin
        writeln(s);
        prog_has_errors:=True;
     end;

Begin
   f:=@dummy;
   if f()<>25 then
     Wrong('f() does not call dummy !!');
   if pointer(@f)=pointer(@dummy) then
     Wrong('@f returns value of f !');
   if longint(f)=longint(@f) then
     Wrong('longint(@f)=longint(f) !!!!');
   if f<>@dummy then
     Wrong('f does not return the address of dummy');
   if longint(@f)=longint(@dummy) then
     Wrong('longint(@f) returns address of dummy instead of address of f');
   fa[0]:=@dummy;
   if longint(@f)=longint(@fa[0]) then
     Wrong('arrays of procvar also wrong');
   if longint(f)<>longint(fa[0]) then
     Wrong('arrays of procvar and procvars are handled differently !!');
   if prog_has_errors then
     Halt(1);
End.