diff options
author | David Blaikie <dblaikie@gmail.com> | 2012-09-21 03:21:07 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2012-09-21 03:21:07 +0000 |
commit | 348df509a0b7f21c2a274e2f928ba43bc95380d4 (patch) | |
tree | 213a46f002de0c8601c20dcf0104cd3e062ee362 /clang/lib/Sema/SemaDeclCXX.cpp | |
parent | a880186030e4626a6730917bd818ed1e50f8811f (diff) | |
download | bcm5719-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.cpp | 5 |
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()) { |