aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaDecl.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2011-01-23 21:33:18 +0000
committerAnders Carlsson <andersca@mac.com>2011-01-23 21:33:18 +0000
commit15e14a289583616e582a23b320933e846a742626 (patch)
tree14b0c267bf2cc10fbae397005bbac005b6703876 /lib/Sema/SemaDecl.cpp
parentf89e0424b8903438179f4a2f16dddd5e5bdc814e (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.cpp47
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);