summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2012-09-21 03:21:07 +0000
committerDavid Blaikie <dblaikie@gmail.com>2012-09-21 03:21:07 +0000
commit348df509a0b7f21c2a274e2f928ba43bc95380d4 (patch)
tree213a46f002de0c8601c20dcf0104cd3e062ee362 /clang/lib/Sema/SemaDeclCXX.cpp
parenta880186030e4626a6730917bd818ed1e50f8811f (diff)
downloadbcm5719-llvm-348df509a0b7f21c2a274e2f928ba43bc95380d4.tar.gz
bcm5719-llvm-348df509a0b7f21c2a274e2f928ba43bc95380d4.zip
PR13890: Warn on abstract final classes.
llvm-svn: 164359
Diffstat (limited to 'clang/lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaDeclCXX.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index e0c655f879f..3191e3fb489 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -3840,6 +3840,11 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
diag::warn_non_virtual_dtor) << Context.getRecordType(Record);
}
+ if (Record->isAbstract() && Record->hasAttr<FinalAttr>()) {
+ Diag(Record->getLocation(), diag::warn_abstract_final_class);
+ DiagnoseAbstractType(Record);
+ }
+
// See if a method overloads virtual methods in a base
/// class without overriding any.
if (!Record->isDependentType()) {
OpenPOWER on IntegriCloud