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