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