[fpc-devel] Gaps in a non-contiguous enum

Ondrej Pokorny lazarus at kluug.net
Tue Aug 16 13:44:57 CEST 2022


Am 16.08.2022 um 13:19 schrieb Michael Van Canneyt via fpc-devel:
> On Tue, 16 Aug 2022, Ondrej Pokorny via fpc-devel wrote:
>> --- code end
>>
>> Run it in Delphi and FPC and compare the outputs:
>>
>> Delphi output:
>> PropCount: 0
>> Property info is null
>>
>> FPC output:
>> PropCount: 1
>> Property name: Fruit
>> Property kind: tkEnumeration
>>
>> As you can see FPC creates a valid PropInfo for the property with 
>> valid TypeInfo (PI^.PropType) of the kind tkEnumeration! This is 
>> definitely wrong.
>>
>> So the solution is either:
>>
>> 1.) don't create PropInfo for the Fruit property like Delphi.
>> - or -
>> 2.) PropType must not be thEnumeration. It should be either tkInteger 
>> or a new custom value like tkCEnumeration or whatever. Because 
>> thEnumeration means it has the enumeration TypeInfo with GetEnumName 
>> and GetEnumValue.
>
> tkInteger or no propinfo at all seems the only correct solution to me, 
> with
> slight preference for no propinfo at all.
Sorry I forgot - a third solution that you and Martin suggested before 
is also OK:
3.) compile error when the Fruit property is published (it is allowed 
only in the private..public sections).

So, I suggest:

*) Delphi mode:  ignore the PropInfo (Delphi compatibility)
*) ObjFpc mode: compiler error (because you prefer no propinfo at all 
and ObjFpc is usually more strict than Delphi).

I've done some PropInfo work before, I assume I could prepare a patch 
for it. Can I start with this work?

Ondrej



More information about the fpc-devel mailing list