I recently upgraded from DMD 2.03something to the latest alpha. Previously, I 
was able to do this:

import std.stdio;
import core.runtime;

void main() {
   foreach( m; ModuleInfo ) {
      writefln( m.name );
   }
}

Which would list the names of all modules. I was using the property to provide 
useful feedback from a custom unit testing function. However, in DMD 2.042, it 
seems that the ModuleInfo struct has been pared down to contain only the 
unitTest property. Very inconvenient, if I may say so!

FWIW, I found that if I just sneak into src/druntime/import/object.di and add 
"@property string name();" to the ModuleInfo struct, everything works as before 
-- the name property is defined in src/druntime/src/object_.d, so I'm curious 
as to why it's excluded from the core.runtime-facing version.

Is there a particular reason for this? Is there some new part of the runtime 
that I should be using to examine module names and unit tests?

...And am I going to explode anything by modifying druntime/import/object.di to 
include the missing property?  :-P

Reply via email to