[fpc-devel] [Suggestion] Enumeration range-check intrinsic
Michael Van Canneyt
michael at freepascal.org
Fri Jul 5 10:47:46 CEST 2019
On Fri, 5 Jul 2019, Ondrej Pokorny wrote:
>>
>> Note: This is my opinion, it may be at odds with what the compiler
>> actually
>> implements :)
>
> Read:
> http://docwiki.embarcadero.com/RADStudio/Rio/en/Simple_Types_(Delphi)#Enumerated_Types_with_Explicitly_Assigned_Ordinality
As I said, my opinion may be at odds with what the compiler actually implements.
Note that the explanation is IMO fuzzy, not to say contradictory:
'An enumerated type defines an ordered set of values by simply listing identifiers that denote these values'
is at odds with (under the heading 'Enumerated Types with Explicitly Assigned Ordinality'):
'An enumerated type is, in effect, a subrange'
But opinions may vary.
If memory serves well, FPC introduced this (before delphi) to be able to import C enums with assigned values.
>>> Btw. why nobody commented on my latest suggestion in
>>> https://lists.freepascal.org/pipermail/fpc-devel/2019-July/041499.html ?
>>> IMO this is a valid solution for both sides.
>>
>> What part exactly ? The additional range check for a case in case of
>> range checking ?
>
> Yes.
>
>
>> I don't see why you need it, since in case range checking is enabled,
>> the assignment of the variable should already have ensured that there
>> are only valid values in it.
>
> The compiler can never catch all kinds of assignments and do range
> checking on them (e.g. FillChar, Read, pointer-writes, etc. etc.). So a
> range check when accessing a value is needed.
Point taken, so your proposal makes sense...
Michael.
More information about the fpc-devel
mailing list