Cast to subclass in the dmd compiler
Steven Schveighoffer via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jul 25 14:01:48 PDT 2017
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
More information about the Digitalmars-d-learn
mailing list