aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-03-03 22:58:57 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2011-03-03 22:58:57 +0000
commit0266aa37802a486e65f9259014bb60848fc4be23 (patch)
tree86f0c749042e2ef308cfeb6ae1c04d90fa642aed
parentb46ae3964ba02535276c71332396e9a7bad2dfa5 (diff)
-Woverloaded-virtual shouldn't warn for static functions. Fixes rdar://9083431 & http://llvm.org/PR9396.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126966 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaDeclCXX.cpp3
-rw-r--r--test/SemaCXX/warn-overloaded-virtual.cpp12
2 files changed, 14 insertions, 1 deletions
diff --git a/lib/Sema/SemaDeclCXX.cpp b/lib/Sema/SemaDeclCXX.cpp
index 45105a14ec..118c9f68f0 100644
--- a/lib/Sema/SemaDeclCXX.cpp
+++ b/lib/Sema/SemaDeclCXX.cpp
@@ -2838,7 +2838,8 @@ void Sema::CheckCompletedCXXClass(CXXRecordDecl *Record) {
for (CXXRecordDecl::method_iterator M = Record->method_begin(),
MEnd = Record->method_end();
M != MEnd; ++M) {
- DiagnoseHiddenVirtualMethods(Record, *M);
+ if (!(*M)->isStatic())
+ DiagnoseHiddenVirtualMethods(Record, *M);
}
}
diff --git a/test/SemaCXX/warn-overloaded-virtual.cpp b/test/SemaCXX/warn-overloaded-virtual.cpp
index 86b1d2365f..8e2b671bf4 100644
--- a/test/SemaCXX/warn-overloaded-virtual.cpp
+++ b/test/SemaCXX/warn-overloaded-virtual.cpp
@@ -52,3 +52,15 @@ struct Derived : public Base {
void foo(int, int);
};
}
+
+namespace PR9396 {
+class A {
+public:
+ virtual void f(int) {}
+};
+
+class B : public A {
+public:
+ static void f() {}
+};
+}