Ping?

On 12/03/14 16:51, Nathan Sidwell wrote:
This patch addresses  17456, which is a desire for failed casts involving
classes to give better diagnostic.  see 
http://llvm.org/bugs/show_bug.cgi?id=17456

Rather than a plain 'cannot cast' error, this patch changes things to:

1) for static cast from 'A *' to 'B *'  where T & S are classes, give
'static_cast from 'A *' to unrelated type 'B *' is not allowed'

2) where a cast fails and involves incomplete classes (directly or as a
pointer), it also notes that the class is incomplete.  For instance:

17456.cc:6:10: error: static_cast from 'A *' to unrelated type 'B *' is not 
allowed
   return static_cast<B*>(arg);
          ^~~~~~~~~~~~~~~~~~~~
17456.cc:3:8: note: 'B' is incomplete
struct B;


The test suite already had applicable cases,  so this patch just adjusts those
tests.

Perhaps the incomplete note should be broken out into a general utility
function?  And perhaps unconditionally show the location of the class
definition/declaration, as that's probably useful in figuring out how to fix the
problem?

guidance welcome.

nathan

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to