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