mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-11 09:18:10 +02:00
46 lines
948 B
ObjectPascal
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.
|