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