On 09/15/2014 04:53 AM, Timon Gehr wrote:
On 09/15/2014 12:38 AM, Walter Bright wrote:
On 9/14/2014 2:48 PM, deadalnix wrote:
If that is really a concern, please consider commenting on
http://wiki.dlang.org/DIP31
I haven't thought it through, but the DIP looks like a good idea.
It should add the test case in this thread,
static if(!is(typeof(x))) enum y=2;
static if(!is(typeof(y))) enum x=1;
as being something that is detected and rejected by the compiler.
Essentially, anything that is order-of-evaluation dependent should be
detected and rejected.
(It is furthermore also important that most programs that are not
dependent on evaluation order are still accepted.)
To elaborate a little: The following simple test case cannot be accepted
using a strategy that alternately analyses AST nodes and poisons symbols
that do not occur in certain scopes:
enum x = "enum xx = q{int y = 0;};";
struct SS{
mixin(xx);
mixin(x);
}
However, it can be given a unique meaning.