<div dir="ltr">2013/2/10 kenji hara <span dir="ltr"><<a href="mailto:k.hara.pg@gmail.com" target="_blank">k.hara.pg@gmail.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><div>I opened the pull request #1413 in the beta term for 2.061, but it had _accidentally_ released without deeply discussion.</div>
<div><a href="https://github.com/D-Programming-Language/dmd/pull/1413" target="_blank">https://github.com/D-Programming-Language/dmd/pull/1413</a><br></div><div><br></div><div>I think and believe that we MUST reset things.</div>
</div></div></div></blockquote><div><br></div><div style>Why I argue that the syntax `alias this = sym;` is wrong? Because:</div><div style><br></div><div style>1. A normal alias declaration (creating aliased name for existing symbol) and alias this feature</div>
<div style>(making a *subtyped* struct through implicit access to its field) are entirely different and has distinct semantics.</div><div style>They merely share a keyword 'alias'.</div><div style><br></div><div style>
2. Instead, we can have much more consistent, useful, and scalable syntax.</div><div style>At the same time, I proposed a new syntax `alias this : ident;` for alias this feature.</div><div style><a href="https://github.com/D-Programming-Language/d-programming-language.org/pull/200">https://github.com/D-Programming-Language/d-programming-language.org/pull/200</a><br>
</div><div style><br></div><div style>struct S {</div><div style>  Â  int value;</div><div style>  Â  alias this : value; Â  // proposed syntax</div><div style>}</div><div style><br></div><div style>Benefits of the proposed syntax are:</div>
<div style>2a. It is consistent with class inheritance syntax `class C : B {}`.</div><div style>2b. It is scalable for multiple alias this feature, as like `alias this : sym1, sym2, ...;` .</div><div style><br></div><div style>
If D community highly require the syntax `alias this = sym`, I'll agree to adding it again.</div><div style>But for that, we should discuss about its cost and benefit.</div><div style><br></div><div style>Sorry for my poor writing.</div>
<div style>Regards.</div><div style><br></div><div style>Kenji Hara</div></div></div></div>