On 7/25/17 4:36 PM, unDEFER wrote:
Hello!
I'm hacking dmd compiler and trying to look on members array just after
parse module.
for(uint i = 0; i < members.dim; i++)
{
Dsymbol m = (*members)[i];
// It is good, but further:
Import imp = cast(Import) m;
if (imp !is null)
{
printf("++++ import %s.%s\n", imp.packages.toChars(),
imp.id.toChars());
}
// ...
}
For really imports casting doing well. But for not imports it again
casts, imp not is null and the compiler crashes.
What I'm doing wrong?
I think it's likely that these are actually C++ classes, and probably
there is no RTTI, so this is a reinterpret cast. This is a wild guess,
but much of the compiler still needs to interface with C++ backend.
I would look elsewhere in the compiler to see how they handle this type
of thing. Not sure of dynamic_cast support?
-Steve