https://issues.dlang.org/show_bug.cgi?id=21475
--- Comment #1 from Max Samukha <maxsamu...@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"); } --