{ 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 sizeof(Codepointer)=sizeof(pointer) } if pointer(@f)=codepointer(@dummy) then Wrong('@f returns value of f !'); {$else} Writeln('address of variable and functions of different size'); {$endif} 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.