FPC procvar syntax problems

This commit is contained in:
pierre 1998-12-22 09:52:49 +00:00
parent d7fc885b57
commit cc7b1a48c4
3 changed files with 39 additions and 8 deletions

View File

@ -1,5 +1,10 @@
{ this are no bugs, just wrong
understanding of FPC syntax }
type testfunc = function:longint;
var f : testfunc;
var test: testfunc;
function test_temp: longint;
@ -9,9 +14,29 @@ end;
procedure sound(test: testfunc);
begin
writeln(test);
{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
sound(test_temp);
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.

View File

@ -10,8 +10,13 @@ end;
begin
if @test <> @test2 then
writeln('different!');
writeln('different!')
else
writeln('error');
m:=@test;
if @m <> @test then
writeln('hi!');
{ here also the syntax was wrong !! }
{ @m <> @test have different types !! }
if m <> @test then
writeln('error');
end.

View File

@ -216,6 +216,10 @@ Fixed bugs:
bug0182.pp @record.field doesn't work in constant expr OK 0.99.9 (PM)
bug0184.pp multiple copies of the same constant set are stored in executable OK 0.99.9 (PFV)
bug0186.pp Erroneous array syntax is accepted. OK 0.99.9 (PFV)
bug0188.pp can't print function result of procedural var that returns a
function. Not a bug : wrong syntax !! See source (PM)
bug0189.pp cant compare adresses of function variables !!
As bug0188 FPC syntax problem see source (PM)
Unproducable bugs:
------------------
@ -250,9 +254,6 @@ bug0171.pp missing typecasting in constant expressions
bug0183.pp internal error 10
bug0185.pp missing range checking for Val and subrange types
bug0187.pp constructor in a WIth statement isn't called correct.
bug0188.pp can't print function result of procedural var that returns a
function.
bug0189.pp cant compare adresses of function variables !!
bug0190.pp can't have typecast for var params ??
bug0191.pp missing vecn constant evaluation
bug0192.pp can't compare boolean result with true/false, because the