// Because we inherit the feature list from HasFeature, this string switch
// must be less restrictive than HasFeature's.
return llvm::StringSwitch<bool>(Extension)
+ .Case("assume_nonnull", true)
.Case("nullability", true)
// C11 features supported by other languages as extensions.
.Case("c_alignas", true)
# 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}}