[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