alias this on module

Meta via Digitalmars-d digitalmars-d at puremagic.com
Thu May 4 18:37:57 PDT 2017


On Sunday, 30 April 2017 at 23:35:43 UTC, Jonathan Marler wrote:
> Any reason why "alias this" doesn't work at the module level?  
> If I recall correctly, a module is really just a "class" under 
> the hood, but when I tried to use it I got:
>
> Error: alias this can only be a member of aggregate, not module 
> <module-name>

It sort of does... almost.

module test3;

void testfun1()
{
}

void testfun2()
{
}

------------------------------------------

module test2;

class Test
{
     public import test3;
}

------------------------------------------

module test1;

import test2;

void main()
{
     Test.test3.testfun1(); //Ok
     Test.test3.testfun2(); //Ok

     import std.stdio;
     import test3;

     assert(&Test.test3.testfun1 == &testfun1); //Passes

     //What?
     Test.testfun1(); Error: no property 'testfun1' for type 
'test2.Test', did you mean 'testfun1'?
}

If you add this alias to Test then it will work as expected:

alias testfun1 = test3.testfun1;


More information about the Digitalmars-d mailing list