Wrong enum comparisons
Jonathan M Davis
jmdavisProg at gmx.com
Sun May 27 23:01:39 PDT 2012
On Sunday, May 27, 2012 21:45:22 bearophile wrote:
> In some code I have created a small bug that can be reduced to
> something like this, that the D compiler has not caught at
> compile-time:
>
>
> enum E1 { A, B }
> enum E2 { C, D }
> void main() {
> E1[2] a;
> with (E2)
> assert(a[0] == D);
> }
>
>
> Why isn't D able to statically tell when you compare values of
> different enums?
> How much work is implementing this compile-time test inside the D
> front-end?
If assert(E1.A == E2.D) wouldn't compile, then this is clearly a bug with
with. If assert(E1.A == E2.d) compiles, then this behavior is clearly
intended. My guess would be that this is a bug with with, but I don't think
that I've ever tried to compare two different types of enums like that before,
so I'd have to check.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list