fpc/tests/tbs/tb0157.pp
2000-11-30 22:38:14 +00:00

46 lines
948 B
ObjectPascal

{ Old file: tbs0188.pp }
{ can't print function result of procedural var that returns a function. Not a bugs : wrong syntax !! See source (PM) }
{ this are no bugs, just wrong
understanding of FPC syntax }
type testfunc = function:longint;
var f : testfunc;
var test: testfunc;
function test_temp: longint;
begin
test_temp:=12;
end;
procedure sound(test: testfunc);
begin
{writeln(test); this is wrong because
test is the function itself and write does not know how to
output a function !
to call test you must use test() !! }
writeln(test());
end; { proc. sound }
var i : longint;
begin
i:=test_temp;
f:=@test_temp;
if f()<>i then
begin
Writeln('error calling f');
Halt(1);
end;
{ this works for FPC
sound(test_temp);
but the correct syntax would be }
sound(@test_temp);
{ imagine if a function would return its own type !! }
{ for f var this is correct also ! }
sound(f);
end.