aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDeclCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-01-23 21:07:30 +0000
committerAnders Carlsson <andersca@mac.com>2011-01-23 21:07:30 +0000
commitf89e0424b8903438179f4a2f16dddd5e5bdc814e (patch)
tree713f8065268178762184e29dde6e959c8a7bb91e /lib/Sema/SemaDeclCXX.cpp
parent3176cca2fe2bb9ab061e8e5fc05b4d59403fcf19 (diff)
Get rid of the [[final]] C++0x attribute.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124083 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDeclCXX.cpp')
-rw-r--r--lib/Sema/SemaDeclCXX.cpp25
1 files changed, 7 insertions, 18 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 9def74d954..eeb665b61d 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -533,15 +533,6 @@ Sema::CheckBaseSpecifier(CXXRecordDecl *Class,
return 0;
}
- // FIXME: Get rid of this.
- // C++0x CWG Issue #817 indicates that [[final]] classes shouldn't be bases.
- if (CXXBaseDecl->hasAttr<FinalAttr>()) {
- Diag(BaseLoc, diag::err_final_base) << BaseType.getAsString();
- Diag(CXXBaseDecl->getLocation(), diag::note_previous_decl)
- << BaseType;
- return 0;
- }
-
if (BaseDecl->isInvalidDecl())
Class->setInvalidDecl();
@@ -913,15 +904,13 @@ void Sema::CheckOverrideControl(const Decl *D) {
/// C++0x [class.virtual]p3.
bool Sema::CheckIfOverriddenFunctionIsMarkedFinal(const CXXMethodDecl *New,
const CXXMethodDecl *Old) {
- // FIXME: Get rid of FinalAttr here.
- if (Old->hasAttr<FinalAttr>() || Old->isMarkedFinal()) {
- Diag(New->getLocation(), diag::err_final_function_overridden)
- << New->getDeclName();
- Diag(Old->getLocation(), diag::note_overridden_virtual_function);
- return true;
- }
-
- return false;
+ if (!Old->isMarkedFinal())
+ return false;
+
+ Diag(New->getLocation(), diag::err_final_function_overridden)
+ << New->getDeclName();
+ Diag(Old->getLocation(), diag::note_overridden_virtual_function);
+ return true;
}
/// ActOnCXXMemberDeclarator - This is invoked when a C++ class member