Bug 17648 – dmd segfault on overload set introspection

Status
RESOLVED
Resolution
WORKSFORME
Severity
major
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2017-07-13T16:53:07Z
Last change time
2020-03-21T03:56:36Z
Keywords
ice
Assigned to
No Owner
Creator
John Colvin

Comments

Comment #0 by john.loughran.colvin — 2017-07-13T16:53:07Z
$ cat blah.d alias BS = BSA; alias BS = BSB; template BSA(alias T) { } template BSB(T) { } void foo() { void bar(alias composite)() { foreach (member; __traits(allMembers, composite)) enum a = __traits(compiles, __traits(getMember, composite, member)); } bar!blah; } segfaults in resolvePropertiesOnly, no idea why it would end up there. I initially thought it was to do with recursing on the same module, but it turns out that it still happens if you take foo to another module.
Comment #1 by uplink.coder — 2017-07-13T16:56:00Z
resolve properties is needed to check if we have a such a member. I'll have a look into this later.
Comment #2 by b2.temp — 2019-05-30T19:33:37Z