[fpc-devel] Dangerous optimization in CASE..OF

Ondrej Pokorny lazarus at kluug.net
Fri Apr 13 21:21:06 CEST 2018


On 13.04.2018 16:16, Martok wrote:
> Am 13.04.2018 um 12:52 schrieb Ondrej Pokorny:
>> I introduced the AS operator for enumerators in
>> https://bugs.freepascal.org/view.php?id=33603
> I'm still not convinced that cementing the FPC-ism of Ada-style high-level enums
> is a good idea (and how that is even logically supposed to work with assigned
> values), but if we want to go there, something like this feature is absolutely
> required (Ada has it).
>
> In that case, off the top of my head, succ/pred, for, bitsizeof and maybe sizeof
> need to be fixed as well.

Why? I don't think so. Enums with assigned values are documented to be 
valid in the whole range Low..High:

http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Simple_Types_(Delphi)#Enumerated_Types_with_Explicitly_Assigned_Ordinality

/type Size = (Small = 5, Medium = 10, Large = Small + Medium);/

/An enumerated type is, in effect, a subrange whose lowest and highest 
values correspond to the lowest and highest ordinalities of the 
constants in the declaration. In the previous example, the Size type has 
11 possible values whose ordinalities range from 5 to 15. (Hence the 
type array[Size] of Char represents an array of 11 characters.) Only 
three of these values have names, but the others are accessible through 
typecasts and through routines such as Pred, Succ, Inc, and Dec. In the 
following example, "anonymous" values in the range of Size are assigned 
to the variable X.//
/
Ondrej


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20180413/10e091c6/attachment.html>


More information about the fpc-devel mailing list