On Monday, 18 July 2016 at 13:00:16 UTC, Lodovico Giaretta wrote:
As per title, is it possible to iterate all visible symbols of the current module and of all imported modules and packages? My aim is to find everything in scope that has a specific UDA.

module foo;

import std.stdio, std.array, std.algorithm;

void bar(){}

struct S{}

void main()
{
    // prints ["object", "std", "bar", "S", "main"]
    // how do I discover that "std" is a package?
    writeln([__traits(allMembers, foo)]);


// prints ["object", "core", "std", "KeepTerminator", "GCC_IO", ... ] // strange thing: it looks the same even if I remove all imports other than std.stdio
    writeln([__traits(allMembers, foo.std)]);
}

Thank you in advance.

This answer to a similar question on StackOverflow may be useful:

http://stackoverflow.com/questions/25555329/d-finding-all-functions-with-certain-attribute/25560800#25560800

Reply via email to