Import Expressions are limited and had to use in abstractions because they require the user to pass -J=.
, which given the average d user uses dub; suggesting such a thing requires a 3 step process.
Note that by default an import expression will not compile unless one or more paths are passed via the -J switch. This tells the compiler where it should look for the files to import. This is a security feature.
My opinion on the subject may violate the dip forum guidelines.
I suggest that its safe to read the file the user is compiling during compilation. I suggest that new special token that generates ... something that an import expression can take without a -J=.
.
import foo;//lolz
import std;
enum string=import(__FILE_LITERAL__).split('/n').front;// "import foo;//lolz"
By separating it into two step process you could use the special token magic
void foo(alias file=__FILE_LITERAL__,int line=__LINE__)(){