DMD: what's the proper way to get a list of symbols from a Module object?

ryuukk_ ryuukk.dev at gmail.com
Tue Mar 14 01:41:18 UTC 2023


Hello,

I am playing a little bit with DMD to get familiar with it (just 
to get a basic overview of it)

I'm trying to come up with a proof of concept for 
https://github.com/dlang/DIPs/blob/master/DIPs/DIP1044.md

```D
enum Tester
{
     KNOWN = 1,
     WITHAUTO = 2
}

void func(Tester a, Tester b)
{

}

void main()
{
     func(Tester.KNOWN, auto.WITHAUTO);
}
```

The idea is to reuse auto, basically do like tuple, create a 
``StructDeclaration`` and inside put a ``VarDeclaration`` just to 
remember what is the identifier, then once it tries to search for 
the symbol, we hijack it and try to search globally instead

I came up with this: 
https://github.com/ryuukk/dmd/commit/cb86d398b68501fd334c090745e946db7b27ff97

It seems to follow the logic i have in mind, the problem is 
whenever i try to search for the symbol given the identifier i 
saved

I had to set the module as parent of the ``StructDeclaration`` 
created to get a starting point


The problem is the field ``members`` from ``Module`` only seems 
to list ``object`` module when it is trying to search for the 
symbol

There should also be ``Tester`` with should be an 
``EnumDeclaration``, why is it not listed?

Am i doing something incorrect (that's probably the case)


Anyway, i'm blind at this point, if someone could provide some 
guidance, that would be kind of you!




More information about the Digitalmars-d-learn mailing list