[fpc-devel] pure function feedback

J. Gareth Moreton gareth at moreton-family.com
Fri Jun 28 14:24:24 CEST 2024


Hi Marģers,

Thanks for the feedback!

Assigning the results of pure functions to constants has not yet been 
developed.  I had planned to add it once the bulk of pure functions 
(i.e. the current merge request) had been approved since it requires 
some additional work (specifically what happens if the function is not 
actually pure or otherwise can't return a straightforward result).

2 and 3 are definite bugs though.  The second case should at the very 
least make the function impure, while the third case should indeed not 
disqualify the function.  I'll see what I can do. Thanks again.

Kit

On 28/06/2024 09:35, Marģers . via fpc-devel wrote:
> 1. pure function value to constants
>
> function foo(i:longword):longword; pure;
> begin
>   foo:=9;
> end;
>
> const bar = foo( 8 );  //-- not allowed.. but i expect this to work!
>          jar : longword = foo( 7 ); //-- and this as well
>
>
> 2. this does not end grasefully
>
> function foo (i:longword):shortstring; pure;
> var s : shortstring;
>       n : longword;
> begin
>   s:=''';
>   for n:=1 to i do s:=s +'a';
>   //-- not assing return value
> end;
> begin writeln(foo(9)); end.
>
> 3.
> function foo (i:longword):ansistring; pure;
> var s : shortstring;
>       n : longword;
> begin
>   s:=''';
>   for n:=1 to i do s:=s +'a';
>   foo:=s; //-- this makes function not pure, but why whould it!
> end;
> begin writeln(foo(9)); end.
>
>
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

-- 
This email has been checked for viruses by Avast antivirus software.
www.avast.com


More information about the fpc-devel mailing list