Lazy evaluation of enum members
Walter Bright
newshound2 at digitalmars.com
Fri Sep 20 09:10:10 PDT 2013
Enum member forward references now work:
void main()
{
enum E
{
A = B,
E = D + 7,
B = 3,
C,
D,
}
assert(E.A == 3);
assert(E.B == 3);
assert(E.C == 4);
assert(E.D == 5);
assert(E.E == 12);
assert(E.max == 12);
}
https://github.com/D-Programming-Language/dmd/pull/2568
Once this is pulled, I intend to extend it so that enum members for imports are
not semantically evaluated at all unless they are used. This is a first step to
making all semantic evaluation of imports lazy, which should give us a big boost
in compilation speed, as well as do a much better job at handling forward
references.
I've been meaning to do this for some time, starting with enums because they are
the easiest.
More information about the Digitalmars-d
mailing list