mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 05:48:34 +02:00
63 lines
1.1 KiB
ObjectPascal
63 lines
1.1 KiB
ObjectPascal
type
|
|
{$ifdef USE_RECORD}
|
|
trec = record
|
|
y : longint;
|
|
end;
|
|
{$else}
|
|
{$ifdef USE_PTRINT}
|
|
trec = ptrint;
|
|
{$else USE_PTRINT}
|
|
trec = pointer;
|
|
{$endif USE_PTRINT}
|
|
{$endif}
|
|
prec = ^trec;
|
|
|
|
const
|
|
value_version_used : longint = 0;
|
|
var_version_used : longint = 0;
|
|
has_error : boolean = false;
|
|
|
|
function test(p : prec;l : longint; k: dword) : boolean; overload;
|
|
begin
|
|
test:=(p<>nil);
|
|
inc(value_version_used);
|
|
end;
|
|
|
|
function test(var p : trec;l : longint; k: dword) : boolean; overload;
|
|
begin
|
|
test:=(@p<>nil);
|
|
inc(var_version_used);
|
|
end;
|
|
|
|
var
|
|
pt : trec;
|
|
i : trec;
|
|
|
|
begin
|
|
pt:=i;
|
|
test(@pt,23,56);
|
|
if (var_version_used>0) then
|
|
begin
|
|
writeln('call with @pt uses var version, which is wrong');
|
|
has_error:=true;
|
|
end
|
|
else
|
|
writeln('call with @pt uses value version');
|
|
|
|
var_version_used:=0;
|
|
value_version_used:=0;
|
|
|
|
test(pt,678,567890);
|
|
if (var_version_used>0) then
|
|
writeln('direct call uses var version')
|
|
else
|
|
writeln('direct call uses value version');
|
|
|
|
if has_error then
|
|
begin
|
|
writeln('This test revealed a problem');
|
|
halt(1);
|
|
end;
|
|
end.
|
|
|