Move checks for creation of objects of abstract class type from the various
authorRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 15 Dec 2016 02:28:18 +0000 (02:28 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Thu, 15 Dec 2016 02:28:18 +0000 (02:28 +0000)
commit81f5ade22790685efa5542bd8b7e7fb2c6b6c56c
tree23c92251419f2a497e8abcd378c2fa5b8b7849b6
parent1a328f508f99473907bbca0e5a40e9f57209a5da
Move checks for creation of objects of abstract class type from the various
constructs that can do so into the initialization code. This fixes a number
of different cases in which we used to fail to check for abstract types.

Thanks to Tim Shen for inspiring the weird code that uncovered this!

llvm-svn: 289753
clang/lib/Sema/SemaExprCXX.cpp
clang/lib/Sema/SemaInit.cpp
clang/lib/Sema/SemaObjCProperty.cpp
clang/test/CXX/class.derived/class.abstract/p2.cpp [new file with mode: 0644]
clang/test/CXX/class.derived/class.abstract/p3.cpp [new file with mode: 0644]