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