blob: 83fc7826df890fa927ca706b985bdc44f2fe970b [file] [log] [blame]
George Karpenkov2301c5a2018-03-23 00:16:03 +00001// RUN: %clang_analyze_cc1 -fblocks -analyze -analyzer-checker=core,nullability,apiModeling -verify %s
2
3#include "Inputs/system-header-simulator-for-nullability.h"
4
5NSString* getUnknownString();
6
7NSString* _Nonnull trust_nonnull_framework_annotation() {
8 NSString* out = [NSString generateString];
9 if (out) {}
10 return out; // no-warning
11}
12
13NSString* _Nonnull distrust_without_annotation() {
14 NSString* out = [NSString generatePossiblyNullString];
15 if (out) {}
16 return out; // expected-warning{{}}
17}
18
19NSString* _Nonnull nonnull_please_trust_me();
20
21NSString* _Nonnull distrust_local_nonnull_annotation() {
22 NSString* out = nonnull_please_trust_me();
23 if (out) {}
24 return out; // expected-warning{{}}
25}
26
27NSString* _Nonnull trust_c_function() {
28 NSString* out = getString();
29 if (out) {};
30 return out; // no-warning
31}
32
33NSString* _Nonnull distrust_unannoted_function() {
34 NSString* out = getPossiblyNullString();
35 if (out) {};
36 return out; // expected-warning{{}}
37}
38
39NSString * _Nonnull distrustProtocol(id<MyProtocol> o) {
40 NSString* out = [o getString];
41 if (out) {};
42 return out; // expected-warning{{}}
43}