[fpc-devel] Gaps in a non-contiguous enum
Michael Van Canneyt
michael at freepascal.org
Tue Aug 16 15:28:19 CEST 2022
On Tue, 16 Aug 2022, Ondrej Pokorny via fpc-devel wrote:
> 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?
Sure. You definitely have my blessing :-)
Michael.
More information about the fpc-devel
mailing list