]> granicus.if.org Git - clang/commitdiff
Make -Wnullability-completeness work with -Wsystem-headers.
authorDouglas Gregor <dgregor@apple.com>
Fri, 19 Jun 2015 23:17:55 +0000 (23:17 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 19 Jun 2015 23:17:55 +0000 (23:17 +0000)
rdar://problem/21134250

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240187 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaType.cpp
test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h [new file with mode: 0644]
test/SemaObjCXX/nullability-consistency.mm

index d950d329b4e02aed7f9a9c0c3d4e283fd29c5667..b7f5ca058c78194de4fb840d214160572c9ece9d 100644 (file)
@@ -2791,9 +2791,12 @@ static FileID getNullabilityCompletenessCheckFileID(Sema &S,
   // We don't want to perform completeness checks on the main file or in
   // system headers.
   const SrcMgr::FileInfo &fileInfo = sloc.getFile();
-  if (fileInfo.getIncludeLoc().isInvalid() ||
-      fileInfo.getFileCharacteristic() != SrcMgr::C_User)
+  if (fileInfo.getIncludeLoc().isInvalid())
     return FileID();
+  if (fileInfo.getFileCharacteristic() != SrcMgr::C_User &&
+      S.Diags.getSuppressSystemWarnings()) {
+    return FileID();
+  }
 
   return file;
 }
diff --git a/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h b/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h
new file mode 100644 (file)
index 0000000..6dbca16
--- /dev/null
@@ -0,0 +1,8 @@
+// Simply marking this as "#pragma clang system_header" didn't tickle the bug, rdar://problem/21134250.
+
+void system1(int *ptr);
+#if WARN_IN_SYSTEM_HEADERS
+// expected-warning@-2{{pointer is missing a nullability type specifier}}
+#endif
+
+void system2(int * __nonnull);
index 7497e84a366e34bccaf5c22316aee0e5997d2749..acb972da0b8577298067f8cf1c8e04d5d1649390 100644 (file)
@@ -1,4 +1,5 @@
-// RUN: %clang_cc1 -fsyntax-only -fblocks -I %S/Inputs %s -verify
+// RUN: %clang_cc1 -fsyntax-only -fblocks -I %S/Inputs -isystem %S/Inputs/nullability-consistency-system %s -verify
+// RUN: %clang_cc1 -fsyntax-only -fblocks -I %S/Inputs -isystem %S/Inputs/nullability-consistency-system %s -Wsystem-headers -DWARN_IN_SYSTEM_HEADERS -verify
 
 #include "nullability-consistency-1.h"
 #include "nullability-consistency-3.h"
@@ -8,6 +9,7 @@
 #include "nullability-consistency-6.h"
 #include "nullability-consistency-7.h"
 #include "nullability-consistency-8.h"
+#include "nullability-consistency-system.h"
 
 void h1(int *ptr) { } // don't warn