[fpc-devel] incompatibility change to default param in trunk?

Martin Frb lazarus at mfriebe.de
Sat Feb 8 20:38:46 CET 2014


Below works with 2.6.2 but not with trunk

Is that indented?

the wiki says
>
>
>         Default values are now properly typechecked
>
>   * *Old behaviour*: The compiler did not detect default values for
>     parameters of which the type did not in any way correspond to the
>     parameter type.
>   * *New behaviour*: The compiler now properly checks whether the type
>     of the constant matches the parameter's type when parsing default
>     values.
>   * *Reason*: Proper type checking is one of the fundamental
>     properties of the Pascal language; Delphi compatibility.
>   * *Remedy*: Add a typecast around default values that now result in
>     compiler errors, or correct the type of such parameters.
>

"did not in any way correspond to the parameter type"
it does through the overloaded operator, doesn't it?

Also "add a typecast" (despite that would mean the overloaded operator 
isn't called),
the following
    procedure Test(a:TObject=TObject(1));
gives
   project1.lpr(6,36) Error: Illegal expression
even though 1 can be typecasted into an TObject.



program project1;
operator := (a:integer) b: TObject;
begin
   b:= TObject.Create;
end;
procedure Test(a:TObject=1);
begin
end;
begin
Test;
end.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20140208/1a26c4c4/attachment.html>


More information about the fpc-devel mailing list