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

Reply via email to