diff options
author | Anders Carlsson <andersca@mac.com> | 2011-01-23 21:33:18 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2011-01-23 21:33:18 +0000 |
commit | 15e14a289583616e582a23b320933e846a742626 (patch) | |
tree | 14b0c267bf2cc10fbae397005bbac005b6703876 /lib/Sema/SemaDecl.cpp | |
parent | f89e0424b8903438179f4a2f16dddd5e5bdc814e (diff) |
Get rid of [[hiding]], [[override]] and [[base_check]].
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 62adcf9bb1..85df57a76c 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3372,52 +3372,6 @@ static void DiagnoseInvalidRedeclaration(Sema &S, FunctionDecl *NewFD) { } } -/// CheckClassMemberNameAttributes - Check for class member name checking -/// attributes according to [dcl.attr.override] -static void -CheckClassMemberNameAttributes(Sema& SemaRef, const FunctionDecl *FD) { - const CXXMethodDecl *MD = dyn_cast<CXXMethodDecl>(FD); - if (!MD || !MD->isVirtual()) - return; - - bool HasOverrideAttr = MD->hasAttr<OverrideAttr>(); - bool HasOverriddenMethods = - MD->begin_overridden_methods() != MD->end_overridden_methods(); - - /// C++ [dcl.attr.override]p2: - /// If a virtual member function f is marked override and does not override - /// a member function of a base class the program is ill-formed. - if (HasOverrideAttr && !HasOverriddenMethods) { - SemaRef.Diag(MD->getLocation(), - diag::err_function_marked_override_not_overriding) - << MD->getDeclName(); - return; - } - - if (!MD->getParent()->hasAttr<BaseCheckAttr>()) - return; - - /// C++ [dcl.attr.override]p6: - /// In a class definition marked base_check, if a virtual member function - /// that is neither implicitly-declared nor a destructor overrides a - /// member function of a base class and it is not marked override, the - /// program is ill-formed. - if (HasOverriddenMethods && !HasOverrideAttr && !MD->isImplicit() && - !isa<CXXDestructorDecl>(MD)) { - llvm::SmallVector<const CXXMethodDecl*, 4> - OverriddenMethods(MD->begin_overridden_methods(), - MD->end_overridden_methods()); - - SemaRef.Diag(MD->getLocation(), - diag::err_function_overriding_without_override) - << MD->getDeclName() << (unsigned)OverriddenMethods.size(); - - for (unsigned I = 0; I != OverriddenMethods.size(); ++I) - SemaRef.Diag(OverriddenMethods[I]->getLocation(), - diag::note_overridden_virtual_function); - } -} - NamedDecl* Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC, QualType R, TypeSourceInfo *TInfo, @@ -4095,7 +4049,6 @@ Sema::ActOnFunctionDeclarator(Scope* S, Declarator& D, DeclContext* DC, FunctionTemplate->setInvalidDecl(); return FunctionTemplate; } - CheckClassMemberNameAttributes(*this, NewFD); } MarkUnusedFileScopedDecl(NewFD); |