<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">2013/2/6 Andrei Alexandrescu <span dir="ltr"><<a href="mailto:SeeWebsiteForEmail@erdani.org" target="_blank">SeeWebsiteForEmail@erdani.org</a>></span><br>
<blockquote class="gmail_quote" style="margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Probably it'll need a fair amount of tweaking. Anyhow it's in destroyable form.<br>

<br>
<a href="http://wiki.dlang.org/DIP25" target="_blank">http://wiki.dlang.org/DIP25</a></blockquote><div><br></div>Hmm, this is much reasonable.<div><br></div><div><div>In recent, I had wrote and post a compiler extension to reinforce a kind of trait which related to pure function. I call the trait "isolated", and that means "Whether any reachable indirections from parameters does not appear in the returned value".</div>
</div><div><br></div><div><a href="https://github.com/D-Programming-Language/dmd/pull/1519">https://github.com/D-Programming-Language/dmd/pull/1519</a><br></div><div><br></div><div>With my patch, such as following cases can be detected.</div>
<div><br></div><div>struct S { int* ptr; }<br></div><div><div><div>S foo(int* ptr) pure;</div><div>S bar(const int* ptr) pure;</div><div><br></div>void main() {<br class=""><div>  int n;</div><div>  immutable S s = foo(&n);</div>
<div>  // implicit conversion from S to immutable S is _diallowed_.</div><div>  // Because &n may appear in foo's returned value.</div><div><br></div><div>  immutable S s = bar(&n);<br></div><div>  // implicit conversion from S to immutable S is _allowed_.</div>
<div>  // Because &n never appear in bar's returned value.</div><div>  // (compiler assumes that bar doesn't do any un-@safe operations, e.g. cast(int*)ptr)</div></div></div><div>}</div><div><br></div><div>As far as I see, the contained essence in the DIP is much similar to the "isolated" traits.</div>
<div class="gmail_extra">So I can say that it is *implementable*.</div><div class="gmail_extra"><br></div><div class="gmail_extra">Kenji Hara<br></div></div></div></div>