[fpc-devel] Implicit function specialization precedence

Ryan Joseph genericptr at gmail.com
Sat Apr 10 17:18:44 CEST 2021



> On Apr 10, 2021, at 6:54 AM, Sven Barth <pascaldragon at googlemail.com> wrote:
> 
> As an additional note: if you take a look at tarrayconstructornode.pass_typecheck you can see that the array type always has the ado_IsConstructor set and if it contains of incompatible types the ado_IsVariant is set as well. So if ado_IsVariant is *not* set, then you can rely on the elementdef of the arraydef.

I checked before and here's what I got. Maybe pass_typecheck hasn't been called yet? If not I'll have to reproduce that code and determine how it knows the elements are not uniform. Thanks.

elecount:4
typesym:{Array Of Const/Constant Open} Array of ShortInt
ado_IsConvertedPointer: FALSE
ado_IsDynamicArray: FALSE
ado_IsVariant: FALSE
ado_IsConstructor: TRUE
ado_IsArrayOfConst: FALSE
ado_IsConstString: FALSE
ado_IsBitPacked: FALSE
ado_IsVector: FALSE
ado_IsGeneric: FALSE

                  writeln('elecount:',tarraydef(caller_def).elecount);
                  writeln('typesym:',tarraydef(caller_def).typesym.realname);
                  writeln('ado_IsConvertedPointer: ',ado_IsConvertedPointer in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsDynamicArray: ',ado_IsDynamicArray in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsVariant: ',ado_IsVariant in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsConstructor: ',ado_IsConstructor in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsArrayOfConst: ',ado_IsArrayOfConst in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsConstString: ',ado_IsConstString in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsBitPacked: ',ado_IsBitPacked in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsVector: ',ado_IsVector in tarraydef(caller_def).arrayoptions);
                  writeln('ado_IsGeneric: ',ado_IsGeneric in tarraydef(caller_def).arrayoptions);

Regards,
	Ryan Joseph



More information about the fpc-devel mailing list