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