[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