Bug 23913 – __traits(getMember) fails for some C symbols

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2023-05-12T08:11:48Z
Last change time
2023-05-16T12:29:02Z
Keywords
ImportC, pull
Assigned to
No Owner
Creator
Andrej Mitrovic

Comments

Comment #0 by andrej.mitrovich — 2023-05-12T08:11:48Z
This works in v2.102.0 but fails in v2.013.x: library.c: ``` typedef enum SomeEnum { foo = 0, bar = -10000, } SomeEnum; ``` mod.d: ``` module mod; import library; alias x = __traits(getMember, library, "SomeEnum"); ``` ``` $ dmd -c library.c mod.d [1] 28653 illegal hardware instruction (core dumped) dmd -c library.c mod.d core.exception.AssertError@src/dmd/expressionsem.d(13055): Assertion failure ``` Specifically: https://github.com/dlang/dmd/blob/a45f4e9f43e9fdbf0b666175e5e66b1ce4f561f6/compiler/src/dmd/expressionsem.d#L13054 It seems to only fail for typedef'ed enums like this.
Comment #1 by andrej.mitrovich — 2023-05-12T08:12:41Z
Corrected wrong keyword.
Comment #2 by dlang-bot — 2023-05-14T05:10:17Z
@WalterBright created dlang/dmd pull request #15234 "fix Issue 23913 - __traits(getMember) fails for some C symbols" fixing this issue: - fix Issue 23913 - __traits(getMember) fails for some C symbols https://github.com/dlang/dmd/pull/15234
Comment #3 by dlang-bot — 2023-05-16T07:07:28Z
dlang/dmd pull request #15234 "fix Issue 23913 - __traits(getMember) fails for some C symbols" was merged into stable: - 441885f9e5f329219c7de3a3e98da0ed8912dd20 by Walter Bright: fix Issue 23913 - __traits(getMember) fails for some C symbols https://github.com/dlang/dmd/pull/15234
Comment #4 by dlang-bot — 2023-05-16T12:29:02Z
dlang/dmd pull request #15238 "merge stable" was merged into master: - 16ec7b681bf314b42a685428ce91d3234459405f by Walter Bright: fix Issue 23913 - __traits(getMember) fails for some C symbols (#15234) https://github.com/dlang/dmd/pull/15238