[Dlang-internal] di files vs CTFE

Jean-Louis Leroy via Dlang-internal dlang-internal at puremagic.com
Fri Aug 4 06:55:29 PDT 2017


Hi,

While working on my openmethods library, I came across a gap that 
may be worth filling.

I have this kind of code:

// in openmethods.d
string registerMethods() { ... }

// in code using the lib
import openmethods;
mixin(registerMethods);

When I add -H, the interface file takes precedence over the 
source file, but the body of registerMethods() is removed. I 
easily found a workaround - make the function a template (see 
here 
https://github.com/jll63/openmethods.d/commit/6a7bf93932bebc53fca368e2280c71a0cbbf3c3b) but it's a bit of a hack. I also had to remove a couple of ctors that was there only because of my ignorance at the time.

I tried pragma(inline) but it doesn't preserve the body. Maybe it 
should, because you cannot inline without the source. Or maybe we 
need another pragma, I couldn't find a nice name but something 
along pragma(interface) or pragma(keepBody).



More information about the Dlang-internal mailing list