Walter Bright:

Therefore, I propose the following addition of a warning:

------------------------------
   const int q = 5;

Warning: const field with initializer should be static or enum.
------------------------------
Over time, this can be upgraded to a deprecation and then an error.

After a suitably long period of time as an error, then we can allow it with the new behavior.

Given the current rate of DMD releases this change path will take a good amount of time.

In the next weeks I suggest to write down the most complete as possible list of desired or expected breaking language changes, and start performing them as early as possible (like during the development of dmd 2.064).

Packing all (or most) of such changes in parallel (instead one after the other along successive compiler versions, as it's mostly currently done) will reduce code breakages later or much later. Bugzilla contains several of such issues (often they are enhancement requests). If we fix only 3-5 every year, D will take many more years to ""stabilize"".

----------------------

Steven Schveighoffer:

What about making it an error UNLESS you pass a compiler flag. The user will be informed, and the new behavior (which I find useful) is possible.

This idea seems able to significantly speed up the transition.

Bye,
bearophile

Reply via email to