diff options
author | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-03-03 22:58:57 +0000 |
---|---|---|
committer | Argyrios Kyrtzidis <akyrtzi@gmail.com> | 2011-03-03 22:58:57 +0000 |
commit | 0266aa37802a486e65f9259014bb60848fc4be23 (patch) | |
tree | 86f0c749042e2ef308cfeb6ae1c04d90fa642aed | |
parent | b46ae3964ba02535276c71332396e9a7bad2dfa5 (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.cpp | 3 | ||||
-rw-r--r-- | test/SemaCXX/warn-overloaded-virtual.cpp | 12 |
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() {} +}; +} |