// テストコード
module a;
import b;
class C{
void f(){}
}
void main(){
auto s = S!C(new C);
s.f(); // ここがError: undefined identifier 'f', did you mean 'import b'?
}
// これだとa.d(xx): Error: undefined identifier 'f', did you mean 'import b'?
module b;
struct S(T){
private T t_; // NG alias thisが無効になる
alias t_ this;
static S!T opCall(T t){
S!T s;
s.t_ = t;
return s;
}
}
// これだとコンパイル通る
module b;
struct S(T){
T t_; // OK alias thisが有効になる
alias t_ this;
static S!T opCall(T t){
S!T s;
s.t_ = t;
return s;
}
}
Ly8g44OG44K544OI44Kz44O844OJCm1vZHVsZSBhOwppbXBvcnQgYjsKY2xhc3MgQ3sKICAgIHZvaWQgZigpe30KfQp2b2lkIG1haW4oKXsKICAgIGF1dG8gcyA9IFMhQyhuZXcgQyk7CiAgICBzLmYoKTsgICAgIC8vIOOBk+OBk+OBjEVycm9yOiB1bmRlZmluZWQgaWRlbnRpZmllciAnZicsIGRpZCB5b3UgbWVhbiAnaW1wb3J0IGInPwp9CgoKLy8g44GT44KM44Gg44GoYS5kKHh4KTogRXJyb3I6IHVuZGVmaW5lZCBpZGVudGlmaWVyICdmJywgZGlkIHlvdSBtZWFuICdpbXBvcnQgYic/Cm1vZHVsZSBiOwpzdHJ1Y3QgUyhUKXsKICAgIHByaXZhdGUgVCB0XzsgICAvLyBORyBhbGlhcyB0aGlz44GM54Sh5Yq544Gr44Gq44KLCiAgICBhbGlhcyB0XyB0aGlzOwogICAgc3RhdGljIFMhVCBvcENhbGwoVCB0KXsKICAgICAgICBTIVQgczsKICAgICAgICBzLnRfID0gdDsKICAgICAgICByZXR1cm4gczsKICAgIH0KfQoKLy8g44GT44KM44Gg44Go44Kz44Oz44OR44Kk44Or6YCa44KLCm1vZHVsZSBiOwpzdHJ1Y3QgUyhUKXsKICAgIFQgdF87ICAvLyBPSyBhbGlhcyB0aGlz44GM5pyJ5Yq544Gr44Gq44KLCiAgICBhbGlhcyB0XyB0aGlzOwogICAgc3RhdGljIFMhVCBvcENhbGwoVCB0KXsKICAgICAgICBTIVQgczsKICAgICAgICBzLnRfID0gdDsKICAgICAgICByZXR1cm4gczsKICAgIH0KfQo=