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.