macros in user code when macros themselves are defined
in a system header. rdar://
18295240
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@220992
91177308-0d34-0410-b5e6-
96231b3b80d8
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();
--- /dev/null
+// override-system-header.h to test out 'override' warning.
+// rdar://18295240
+#define END_COM_MAP virtual unsigned AddRef(void) = 0;
--- /dev/null
+// 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;
+};