[fpc-devel] Parameters must match exactly?

Florian Klaempfl florian at freepascal.org
Tue May 18 15:43:28 CEST 2010

Vinzent Höfler schrieb:
>> was allowed and this code is simply broken, the compiler has to
>> complain and this was fixed.
> Agreed. But in that case a function result of type tc1 wouldn't be
> allowed to be assigned to tc3 either. So your previous statement
> ("use a function instead") didn't make too much sense in this
> context, did it?

It is pretty obvious for me that one needs an as-operator in this case?
Using the as-operator with var parameters is however not possible
without a temp. variable.

>> Code depending on this lazy behaviour simply needs to be fixed,
>> there are several solutions like inserting a explicit type cast or
>> using functions maybe together with the as operator.
> But that wasn't the problem. The problem I mean is that:
> procedure p (out c : tc2)
> begin
>    c := tc3.create;

This breaks already here if I assume the type definitions I used.

> end;
> var
>   c1 : tc1;
> begin
>   p(c1);
> end.
> seems not to be allowed anymore.

Please test your examples first before doing some wild guesses. It is
useless to discuss about completly broken code.

> BTW, I still can not follow the argument of that "out" parameters
> need finalization. Sure, for reference counted types this may be
> true, I won't argue that, but "out" used to work for integers as well
> as other types needing no finalization, so the compiler should not
> insert finalization code when classes are involved

Who said that this is done?

More information about the fpc-devel mailing list