[fpc-devel] Dangerous optimization in CASE..OF
Ondrej Pokorny
lazarus at kluug.net
Sun Jul 16 20:25:33 CEST 2017
On 16.07.2017 11:07, Michael Van Canneyt wrote:
> You are missing the point of an enumerated.
>
> The whole point of using an enumerated is that range checking *is not
> necessary*, because the values are 'by definition' correct.
>
> If the compiler cannot assume this, you're just using an integer with
> some named values. Hardly worth a separate type.
No, I am not missing the point. I try to explain to you that if you
understand enumerated types as strict values from a set, you completely
have to redesign the way they work (see my previous emails) - which is
not doable with current Pascal philosophy.
For now, Pascal enumerated types work as aliases for underlying ordinal
values - a concept that is exactly the same as C enums:
https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.pdf page 11:
*"An enumeration is a custom data type used for storing constant integer
values and referring to them by names."*
page 12:
*"Although such variables are considered to be of an enumeration type,
you can assign them**
**any value that you could assign to an int variable, including values
from other enumerations.**
**Furthermore, any variable that can be assigned an int value can be
assigned a value from**
**an enumeration."
*What you did is you introduced one feature from high-level enumeration
(case optimization) but kept all other features from low-level
enumerations. Do it properly (=break existing code) or don't do it at all.*
*
Well, I have used all arguments I could think of...
Ondrej
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20170716/c52aab14/attachment.html>
More information about the fpc-devel
mailing list