<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Tue, Jan 27, 2015 at 3:35 PM, Nathan Sidwell <span dir="ltr"><<a href="mailto:nathan@acm.org" target="_blank">nathan@acm.org</a>></span> wrote:<br><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"><span class="">On 01/23/15 16:49, Richard Smith wrote:<br>
<br>
<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">
<br>
How about "static_cast from 'A *' to type 'B *' that is not related by<br>
inheritance is not allowed"? As it stands, it sounds like you're<br>
calling the type 'B *' a hierarchy. Also, consider:<br>
</blockquote>
<br></span>
Yeah, I was struggling with suitable  wording.  This version goes with:<br>
 ... from %1 to %2, which are unrelated by inheritance, is not allowed</blockquote><div><br></div><div>I slightly prefer "are not related" over "are unrelated" (because we're talking about the absence of a property, rather than a negative property existing, especially in the case of an incomplete type).</div><div><br></div><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"><span class="">
<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">
While here, please give err_bad_cxx_cast_unrelated a slightly more<br>
specific name; [...]unrelated_class or similar?<br>
</blockquote>
<br></span>
Done.<span class=""><br>
<br>
<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">
I think we should only do this if we're casting to and from a class<br>
type; I don't think it's useful to point out that T is an incomplete<br>
type in:<br>
</blockquote>
<br></span>
Done.<span class=""><br>
<br>
<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">
Also, we should produce a similar "unrelated hierarchy" diagnostic and<br>
"incomplete" note when casting to a reference to incomplete class type<br>
or casting from an lvalue of incomplete class type.<br>
</blockquote>
<br></span>
Not disagreeing.  Can we handle this in a different patch?</blockquote><div><br></div><div>Sure.</div><div> </div><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"><span class=""><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">
Finally, trivial formatting things:<br>
  * remove the space before the parens in the function calls above.<br>
</blockquote>
<br></span>
Done.  It's going to take a while to retrain my fingers.<span class=""><br>
<br>
<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">
  * put the && on the previous line when it's used in a line continuation:<br>
<br>
+      if (SrcPointer->getPointeeType()-<u></u>>getAs<RecordType>()<br>
+          && DestPointer->getPointeeType()-<u></u>>getAs<RecordType>())<br>
</blockquote>
<br></span>
Done.  (inconsistent with how << is formatted, but what the hey)<br>
<br>
ok?</blockquote><div><div><br></div><div>+  if (auto Ptr = To->getAs<PointerType>()) </div><div>+    {</div></div><div>+      To = Ptr->getPointeeType();<br></div><div><br></div><div>{ on previous line, and only 2 space indent, please.</div><div><br></div><div>LGTM modulo the above, thanks!</div></div></div></div>