D2 is really that stable as it is claimed to be?

Maxim Fomin maxim at maxim-fomin.ru
Sat Sep 21 14:40:37 PDT 2013


On Saturday, 21 September 2013 at 18:55:46 UTC, Walter Bright 
wrote:
> On 9/21/2013 11:03 AM, Maxim Fomin wrote:
>> For example, I was pissed off two days ago when
>> git-head dmd rejected to compile large code base due to some 
>> 'enum overflow'
>> error. Being watching bugzilla and github for two years, that 
>> change was neither
>> expected nor clear for me.
>
> Enum members with no initializer are defined to be set to the 
> previous enum member's value + 1. This, of course, can overflow 
> if the previous value is the max value for the type. For 
> example,
>
> enum E {
>     A = int.max,
>     B
> }
>
> C:\cbx\mars>dmd test
> test.d(3): Error: enum member test.E.B overflow of enum value 
> cast(E)2147483647
>
> This change was made because the behavior of ignoring the 
> overflow was listed as a bug.
>
> Since you said it was unclear, how could this be made clear?
>
> ------------------------------------
> As C code:
>
> enum E {
>     A = 2147483647,
>     B
> };
>
> and gcc reports:
>
> test.c:4: error: overflow in enumeration values

Thanks, that is clear. Unfortunately, I cannot say that the 
explanation improves my attidute to the language - dmd still 
breaks too often code and some significant features (like AAs, 
scope, shared) are at risk to be seriously changed which is a 
serious problem to the user.


More information about the Digitalmars-d mailing list