I reopened Bug 7815 because I found a new test case where it still doesn't work even in the latest beta. <br><br><a href="http://d.puremagic.com/issues/show_bug.cgi?id=7815">http://d.puremagic.com/issues/show_bug.cgi?id=7815</a><br>
<br><div class="gmail_quote">On Sat, Apr 7, 2012 at 6:14 PM, Walter Bright <span dir="ltr"><<a href="mailto:walter@digitalmars.com">walter@digitalmars.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
<br>
On 4/7/2012 2:21 PM, Nick Sabalausky wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
From: "Nick Sabalausky" <<a href="mailto:bus_dmdbeta@semitwist.com" target="_blank">bus_dmdbeta@semitwist.com</a>><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
While the test case for #7826 now works, for some reason I'm still getting the same warning in my own projects (but without "pure" being included in "must be declared as...") even though they which use the *exact* same toHash function (well, except "str" having a different name). I'll try to figure out a new test case after I get some sleep...<br>

<br>
</blockquote>
<br>
/facepalm: With Beta2, I wasn't getting the probelem with the original test case (ie "const hash_t toHash()") because I wasn't compiling it with warnings enabled.<br>
<br>
So here's the "issue" now, *if* it even is an issue (I'm not sure):<br>
<br>
With Beta2's current fix for #7826, I can do this without warnings or errors:<br>
<br>
   struct Foo {<br>
       string str;<br>
       const nothrow @safe hash_t toHash() {<br>
           return typeid(string).getHash(&str);<br>
       }<br>
   }<br>
<br>
But, this (ie, removing nothrow and/or @safe):<br>
<br>
   struct Foo {<br>
       string str;<br>
       const hash_t toHash() {<br>
           return typeid(string).getHash(&str);<br>
       }<br>
   }<br>
<br>
Gives me a warning:<br>
<br>
Warning: toHash() must be declared as extern (D) uint toHash() const nothrow @safe, not const uint()<br>
<br>
Is this the correct behavior or not? Jonathan's comment over here ( <a href="http://d.puremagic.com/issues/show_bug.cgi?id=7826" target="_blank">http://d.puremagic.com/issues/<u></u>show_bug.cgi?id=7826</a> ) suggested that toHash in a struct shouldn't require nothrow or @safe. I'm refraining from having any opinion on the matter ATM, I just wanted to bring it up in case the current fix is incomplete.<br>

<br>
</blockquote>
<br></div></div>
It's correct behavior. We're moving towards const/pure/nothrow/@safe for all those functions.<div class="HOEnZb"><div class="h5"><br>
______________________________<u></u>_________________<br>
dmd-beta mailing list<br>
<a href="mailto:dmd-beta@puremagic.com" target="_blank">dmd-beta@puremagic.com</a><br>
<a href="http://lists.puremagic.com/mailman/listinfo/dmd-beta" target="_blank">http://lists.puremagic.com/<u></u>mailman/listinfo/dmd-beta</a><br>
</div></div></blockquote></div><br>