Workaround for https://issues.dlang.org/show_bug.cgi?id=18422?

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Sun Feb 11 15:34:07 UTC 2018


I'm trying to sketch a simple compile-time reflection system, and 
https://issues.dlang.org/show_bug.cgi?id=18422 is a blocker of the 
entire approach. My intent is to have a struct Module, which can be 
initialized with a module name; then:

struct Module
{
     private string name;
     Data[] data(); // all data declarations
     Function[] functions();
     Struct[] structs();
     Class[] classes();
     Union[] unions();
     Enum[] enums();
}

Then each of those types carries the appropriate information. Notably, 
there are no templates involved, although all code is evaluated during 
compilation. Non-data information (types, qualifiers etc) is carried as 
strings. This allows for simple arrays to convey heterogeneous 
information such as "all functions in this module", even though their 
signatures are different.

This makes for a simple and easy to use system for introspecting things 
during compilation. Clearly in order to do that some of these 
compile-time strings must be mixed in, which is why 
https://issues.dlang.org/show_bug.cgi?id=18422 is so problematic.

Until we discuss a fix, are there any workarounds?


Thanks,

Andrei


More information about the Digitalmars-d mailing list