[Issue 16570] [REG 2.072.0-b1] Enum member with interpreted initializer has type of initializer not enum
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Oct 7 20:01:27 PDT 2016
https://issues.dlang.org/show_bug.cgi?id=16570
--- Comment #3 from github-bugzilla at puremagic.com ---
Commits pushed to stable at https://github.com/dlang/dmd
https://github.com/dlang/dmd/commit/620ecc2fa91dd88310a9205666fc0c826a778303
fix Issue 16570 - Enum member with interpreted...
...initializer has type of initializer not enum
- There is a very old (dmd 0.50 [¹]) mismatch of the CastExp's `to` type
and the type painted on the CastExp (the latter being the basetype of
the former, i.e. EnumType vs. int) in the result of
`Expression.castTo(ed.type)`.
Because of that difference interpreting castTo might unexpectedly use
the basetype instead of the enum type for the enum initializer, and
thus triggers the can't convert int to EnumType error.
- The trigger was introduced with the addition of a `e.ctfeInterpret` in
denum.d (see 932be192e3).
- Comments on CastExp suggest that this type mismatch is actually
intended, I don't see any reason for it though.
- Alternatively we could somehow fix ctfeInterpret to preserve CastExp's
painted type.
[¹]:
https://github.com/dlang/dmd/blob/bde09435d149c699490bb888b832228e0d31c221/src/cast.c#L321-L323respect
https://github.com/dlang/dmd/commit/fa464f3742f5b92324a20597489c475118a293cc
Merge pull request #6175 from MartinNowak/fix16570
fix Issue 16570 - Enum member with interpreted...
--
More information about the Digitalmars-d-bugs
mailing list