On Friday, 10 October 2014 at 22:51:34 UTC, Walter Bright wrote:
On 10/10/2014 3:46 PM, Timon Gehr wrote:
On 10/11/2014 12:29 AM, Walter Bright wrote:
On 10/10/2014 3:06 PM, Timon Gehr wrote:
On 10/10/2014 11:25 PM, Walter Bright wrote:

Essentially, the rules for multiple alias this should be the same as for multiple imports and multiple mixin templates. These rules work, and the
consistency will be expected.

Agreed. Do you suggest to overload alias this against imports and
mixin templates?

I hadn't thought of that (thanks for bringing it up). My first thought is no. Alias this gets searched after those do, because it comes into
play only when the symbol isn't resolved in the scope.

This allows for symbol hijacking (this is also the current behaviour):

// ---

module m;
import std.stdio;
// void foo(int x){ writeln("hi from m"); } // uncomment to hijack

// ---

module main;
import std.stdio;

struct T{
    import m;
    alias s this;
    S s;
}


struct S{
    void foo(int x){ writeln("hi from S"); }
}

void main(){
    T t;
    t.foo(1);
}

Hmm. Good point. The alias this should be done before imports.

Symmetrically. You may use symbol from import, uncomment it in aliased type and hijack it.

Reply via email to