Inconsistent behavior of __FILE__ within mixin template
    Andre Pany 
    andre at s-e-a-p.de
       
    Wed May 29 08:45:45 UTC 2019
    
    
  
Hi,
I have a module a.d
---------------
struct TestClass
{
     string name;
     string fileName;
}
TestClass[] testClasses;
mixin template UnitTest()
{
     private static string getFileName(string fileName = __FILE__)
     {
         return fileName;
     }
     private static this()
     {
         testClasses ~= TestClass(this.classinfo.name, 
getFileName());
     }
}
and a module b.d
---------------
import std.stdio;
import a;
class MyTest
{
     mixin UnitTest;
     this()
     {
         writeln(getFileName());
     }
}
void main()
{
     new MyTest();
     writeln(testClasses);
}
What I want is to have in the struct array testClasses the file 
name of module b
to generate an xml report. But the output of this application is
> b.d
> [TestClass("b.MyTest", "a.d")]
I would have thought __FILE evaluates in both cases to "b.d" as 
the code is mixed into
module b. Is this the intended behavior?
Kind regards
André
    
    
More information about the Digitalmars-d-learn
mailing list