// RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-checker=core,nullability,apiModeling -verify %s #include "Inputs/system-header-simulator-for-nullability.h" NSString* _Nonnull trust_nonnull_framework_annotation() { NSString* out = [NSString generateString]; if (out) {} return out; // no-warning } NSString* _Nonnull trust_instancemsg_annotation(NSString* _Nonnull param) { NSString* out = [param stringByAppendingString:@"string"]; if (out) {} return out; // no-warning } NSString* _Nonnull distrust_instancemsg_noannotation(NSString* param) { if (param) {} NSString* out = [param stringByAppendingString:@"string"]; if (out) {} return out; // expected-warning{{}} } NSString* _Nonnull trust_analyzer_knowledge(NSString* param) { if (!param) return @""; NSString* out = [param stringByAppendingString:@"string"]; if (out) {} return out; // no-warning } NSString* _Nonnull trust_assume_nonnull_macro() { NSString* out = [NSString generateImplicitlyNonnullString]; if (out) {} return out; // no-warning } NSString* _Nonnull distrust_without_annotation() { NSString* out = [NSString generatePossiblyNullString]; if (out) {} return out; // expected-warning{{}} } NSString* _Nonnull nonnull_please_trust_me(); NSString* _Nonnull distrust_local_nonnull_annotation() { NSString* out = nonnull_please_trust_me(); if (out) {} return out; // expected-warning{{}} } NSString* _Nonnull trust_c_function() { NSString* out = getString(); if (out) {}; return out; // no-warning } NSString* _Nonnull distrust_unannoted_function() { NSString* out = getPossiblyNullString(); if (out) {}; return out; // expected-warning{{}} } NSString * _Nonnull distrustProtocol(id o) { NSString* out = [o getString]; if (out) {}; return out; // expected-warning{{}} }