[fpc-pascal] Blockread and buffers
Peter J. Haas
fpc.ml at pjh2.de
Thu Mar 24 18:45:37 CET 2005
Hi Peter,
on 2005-03-24T12:55:21+02:00 Peter wrote:
>> I don't know, whether other compiler modes support const and out.
>> If yes, the RTL/FCL/LCL functions should use it. This do mean e.g.
> For compatibility we can't do this. Delphi also doesn't warn.
This is not really a good argument. FPC generate several hints, which
are not generated by Delphi and which are useful.
> And making the warning dependent on the compiler mode will make
> things too complex. Because it then dependents on the compiler mode
> used to compile a used unit that contains a function and not on the
> compiler mode used in the current unit.
The problem is, that only the OBJFPC and Delphi modes support the out
parameter. This prevent a simple solution.
BTW: This need to be documented, at least in the Reference guide
Chapter 10 (Using functions and procedures / Parameter lists / Out
parameters), maybe in the Programmers manual too.
The problem, you describe above could be solved relative simple, even
the solution is more complex. I don't know any details of the
compiler, but I assume, that internally the compiler use a identical
structure to manage the parameter lists for all compiler modes. The
compiler can analyse the function and determine, whether a var
parameter is a in, a in/out or a out parameter and modify the
parameter list corresponding. This enable to generate correct hints.
As a side effect of such a analyse, FPC could generate hints regarding
unneeded assignments, like in Delphi:
var
i: Integer;
begin
i := 1; <--- assigned value not used
i := 2;
...
And additionally the compiler could generate hints to change a var
parameter to a const or out parameter in OBJFPC or Delphi mode.
Because I know your standard answer and don't accept it, is there any
suggestion list, similar to the bug list?
wkr Peter.
More information about the fpc-pascal
mailing list