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.