Any AST experts n da house?

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Thu Nov 17 11:58:01 PST 2016


On 2016-11-17 15:10, Andrei Alexandrescu wrote:
> Lucia is working on https://issues.dlang.org/show_bug.cgi?id=16683 which
> shows good promise in cleaning the cobwebs around Typeinfo. She looked
> into matters and figured she needs to have TypeidExp.semantic() return
> the lowered expression. In the code below
>
> getFuncTemplateDecl(tidSymbol); // returns nil
>
> and the compiler crashes when it hits this line.
>
> //  extern (C++) final class TypeidExp : Expression @ dmd-> expression.d
>
>  override Expression semantic(Scope* sc)
>     {
>         auto tidIdentifierExp = new IdentifierExp(loc, new
> Identifier("__typeidImplT"));
>         auto tidSymbol = new Dsymbol(new Identifier("__typeidImplT"));
>
>         auto tidDeclaration = getFuncTemplateDecl(tidSymbol);
>         auto tidExp = new TemplateExp(loc, tidDeclaration);
>         auto callExp = new CallExp(loc, tidExp);
>
>         return callExp;
>     }
>
> Any help would be appreciated.

Not related to the actual question. Instead of explicitly creating a new 
identifier, use Identifier.idPool [1], which will reuse any existing 
identifier or create a new one if necessary.

[1] https://github.com/dlang/dmd/blob/master/src/identifier.d#L141

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list