]> granicus.if.org Git - clang/commitdiff
-Woverloaded-virtual shouldn't warn for static functions. Fixes rdar://9083431 &...
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 3 Mar 2011 22:58:57 +0000 (22:58 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Thu, 3 Mar 2011 22:58:57 +0000 (22:58 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126966 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaDeclCXX.cpp
test/SemaCXX/warn-overloaded-virtual.cpp

index 45105a14ec4418aa72622a67c8a6b51dc92ecd23..118c9f68f06f8a3902dc44d65abce490fc2d6213 100644 (file)
@@ -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);
     }
   }
 
index 86b1d2365f93b0551de5b1e1fc9cd63b282f3f51..8e2b671bf4936a627172c27f154a6a7a5a90c84f 100644 (file)
@@ -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() {}
+};
+}