From e224f9922d6c828390c13e7606555761dc35fd5c Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 29 Jun 2015 17:25:49 +0000 Subject: [PATCH] Make __has_extension(assume_nonnull) always true. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@240969 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Lex/PPMacroExpansion.cpp | 1 + test/SemaObjCXX/nullability-pragmas.mm | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/lib/Lex/PPMacroExpansion.cpp b/lib/Lex/PPMacroExpansion.cpp index ea0af92473..3855c802ae 100644 --- a/lib/Lex/PPMacroExpansion.cpp +++ b/lib/Lex/PPMacroExpansion.cpp @@ -1226,6 +1226,7 @@ static bool HasExtension(const Preprocessor &PP, const IdentifierInfo *II) { // Because we inherit the feature list from HasFeature, this string switch // must be less restrictive than HasFeature's. return llvm::StringSwitch(Extension) + .Case("assume_nonnull", true) .Case("nullability", true) // C11 features supported by other languages as extensions. .Case("c_alignas", true) diff --git a/test/SemaObjCXX/nullability-pragmas.mm b/test/SemaObjCXX/nullability-pragmas.mm index 2047fd9e0e..dbf4f37f40 100644 --- a/test/SemaObjCXX/nullability-pragmas.mm +++ b/test/SemaObjCXX/nullability-pragmas.mm @@ -7,6 +7,10 @@ # error assume_nonnull feature is not set #endif +#if !__has_extension(assume_nonnull) +# error assume_nonnull extension is not set +#endif + void test_pragmas_1(A * _Nonnull a, AA * _Nonnull aa) { f1(0); // okay: no nullability annotations f2(0); // expected-warning{{null passed to a callee that requires a non-null argument}} -- 2.50.1