r240187 - Make -Wnullability-completeness work with -Wsystem-headers.

Douglas Gregor dgregor at apple.com
Fri Jun 19 16:17:55 PDT 2015


Author: dgregor
Date: Fri Jun 19 18:17:55 2015
New Revision: 240187

URL: http://llvm.org/viewvc/llvm-project?rev=240187&view=rev
Log:
Make -Wnullability-completeness work with -Wsystem-headers.

rdar://problem/21134250

Added:
    cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/
    cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h   (with props)
Modified:
    cfe/trunk/lib/Sema/SemaType.cpp
    cfe/trunk/test/SemaObjCXX/nullability-consistency.mm

Modified: cfe/trunk/lib/Sema/SemaType.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=240187&r1=240186&r2=240187&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/SemaType.cpp (original)
+++ cfe/trunk/lib/Sema/SemaType.cpp Fri Jun 19 18:17:55 2015
@@ -2791,9 +2791,12 @@ static FileID getNullabilityCompleteness
   // 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;
 }

Added: cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h?rev=240187&view=auto
==============================================================================
--- cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h (added)
+++ cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h Fri Jun 19 18:17:55 2015
@@ -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 at -2{{pointer is missing a nullability type specifier}}
+#endif
+
+void system2(int * __nonnull);

Propchange: cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: cfe/trunk/test/SemaObjCXX/Inputs/nullability-consistency-system/nullability-consistency-system.h
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: cfe/trunk/test/SemaObjCXX/nullability-consistency.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjCXX/nullability-consistency.mm?rev=240187&r1=240186&r2=240187&view=diff
==============================================================================
--- cfe/trunk/test/SemaObjCXX/nullability-consistency.mm (original)
+++ cfe/trunk/test/SemaObjCXX/nullability-consistency.mm Fri Jun 19 18:17:55 2015
@@ -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
 





More information about the cfe-commits mailing list