fpc/tests/tbs/tb0163.pp
pierre 358eb38ef2 * fix test for msdos compact mode
git-svn-id: trunk@34268 -
2016-08-10 16:25:42 +00:00

50 lines
1.2 KiB
ObjectPascal

{ 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.