www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 19477] New: Circular alias this makes constructor not work

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

          Issue ID: 19477
           Summary: Circular alias this makes constructor not work with
                    UFCS only
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dkorpel live.nl

I created two types that can convert to eachother:
```
struct Q16 {
    Q32 toQ32() {return Q32.init;}
    alias toQ32 this;
}

struct Q32 {
    this(Q16 a) {}
    Q16 toQ16() {return Q16.init;}
    alias toQ16 this;
}

void main() {
    auto x = Q32(Q16.init);
    auto y = Q16.init.Q32;
}
```

The assignment of x compiles, but for y you get "Error: cannot resolve
identifier Q32". Removing either of the "alias this" makes it work.

--
Dec 11 2018