Bug 23188 – The enum of const has a complier exception of type conversion in the ternary operator.
Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Mac OS X
Creation time
2022-06-15T01:57:50Z
Last change time
2022-06-15T09:29:04Z
Assigned to
No Owner
Creator
shove
Comments
Comment #0 by shove — 2022-06-15T01:57:50Z
enum Status : byte
{
A, B, C
}
void main()
{
}
Status foo()
{
Status t = Status.A;
const Status s = t;
return (s == Status.A) ? Status.B : s; // <-- here
}
# dmd app.d
app.d(16): Error: cannot implicitly convert expression `cast(int)s == 0 ? 1 : cast(int)s` of type `int` to `Status`
/////////////////////////////////////////
So there's no problem:
Status foo()
{
Status t = Status.A;
const Status s = t;
if (s == Status.A)
return Status.B;
return s;
}