r220992 - C++-11 [qoi]. Do not warn on missing 'verride' on use of

Fariborz Jahanian fjahanian at apple.com
Fri Oct 31 12:56:27 PDT 2014


Author: fjahanian
Date: Fri Oct 31 14:56:27 2014
New Revision: 220992

URL: http://llvm.org/viewvc/llvm-project?rev=220992&view=rev
Log:
C++-11 [qoi]. Do not warn on missing 'verride' on use of
macros in user code when macros themselves are defined
in a system header. rdar://18295240

Added:
    cfe/trunk/test/SemaCXX/Inputs/override-system-header.h
    cfe/trunk/test/SemaCXX/override-in-system-header.cpp
Modified:
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp

Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=220992&r1=220991&r2=220992&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Fri Oct 31 14:56:27 2014
@@ -1905,6 +1905,12 @@ void Sema::DiagnoseAbsenceOfOverrideCont
       isa<CXXDestructorDecl>(MD))
     return;
 
+  if (MD->getLocation().isMacroID()) {
+    SourceLocation MacroLoc = getSourceManager().getSpellingLoc(MD->getLocation());
+    if (getSourceManager().isInSystemHeader(MacroLoc))
+      return;
+  }
+  
   if (MD->size_overridden_methods() > 0) {
     Diag(MD->getLocation(), diag::warn_function_marked_not_override_overriding)
       << MD->getDeclName();

Added: cfe/trunk/test/SemaCXX/Inputs/override-system-header.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/Inputs/override-system-header.h?rev=220992&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/Inputs/override-system-header.h (added)
+++ cfe/trunk/test/SemaCXX/Inputs/override-system-header.h Fri Oct 31 14:56:27 2014
@@ -0,0 +1,3 @@
+// override-system-header.h to test out 'override' warning.
+// rdar://18295240
+#define END_COM_MAP virtual unsigned AddRef(void) = 0;

Added: cfe/trunk/test/SemaCXX/override-in-system-header.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/override-in-system-header.cpp?rev=220992&view=auto
==============================================================================
--- cfe/trunk/test/SemaCXX/override-in-system-header.cpp (added)
+++ cfe/trunk/test/SemaCXX/override-in-system-header.cpp Fri Oct 31 14:56:27 2014
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -std=c++11 -isystem %S/Inputs %s -verify
+// expected-no-diagnostics
+// rdar://18295240
+
+#include <override-system-header.h>
+
+struct A
+{
+  virtual void x();
+  END_COM_MAP;
+};
+ 
+struct B : A
+{
+  virtual void x() override;
+  END_COM_MAP;
+};





More information about the cfe-commits mailing list