[Issue 21475] template 'this' parameter is incorrectly handled for 'alias this'

d-bugmail at puremagic.com d-bugmail at puremagic.com
Sat Dec 12 10:39:10 UTC 2020


https://issues.dlang.org/show_bug.cgi?id=21475

--- Comment #1 from Max Samukha <maxsamukha at gmail.com> ---
(In reply to Max Samukha from comment #0)
> struct S {
>     string rt;
>     void _init(this T)() {
>         rt =  T);
>     }
> }
> 
> struct S2 {
>     S s;
>     alias s this;
> }
> 
> void main() {
>     S2 s2;
>     s2._init;
>     assert(s2.rt == "S2");
> }
> 
> T is incorrectly resolved to S, while it should be typeof(s2), which is S2.

Corrected test case:

struct S {
    string rt;
    void _init(this T)() {
        rt = __traits(identifier, T);
    }
}

struct S2 {
    S s;
    alias s this;
}

void main() {
    S2 s2;
    s2._init;
    assert(s2.rt == "S2");
}

--


More information about the Digitalmars-d-bugs mailing list