| // REQUIRED_ARGS: -preview=fixAliasThis |
| |
| // https://issues.dlang.org/show_bug.cgi?id=16086 |
| struct A |
| { |
| void tail() {} |
| } |
| |
| struct S16086 |
| { |
| struct Inner2 |
| { |
| Inner a; |
| alias a this; |
| } |
| |
| struct Inner |
| { |
| int unique_identifier_name; |
| int tail = 2; |
| } |
| |
| Inner2 inner; |
| alias inner this; |
| |
| auto works() |
| { |
| return unique_identifier_name; |
| } |
| |
| auto fails() |
| { |
| int a = tail; |
| return tail; // Line 22 |
| // The workaround: return this.tail; |
| } |
| } |
| |
| // https://issues.dlang.org/show_bug.cgi?id=16082 |
| struct S16082 |
| { |
| struct Inner |
| { |
| int any_name_but_modulename; |
| int aliasthis = 5; |
| } |
| |
| Inner inner; |
| alias inner this; |
| |
| auto works() |
| { |
| return any_name_but_modulename; |
| } |
| auto fails() |
| { |
| return aliasthis; // Line 20 |
| } |
| } |