blob: 67b6bd27c918ba3846ad63da0cef51b8cee847ce [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
George Karpenkov2301c5a2018-03-23 00:16:03 +00005NSString* _Nonnull trust_nonnull_framework_annotation() {
6 NSString* out = [NSString generateString];
7 if (out) {}
8 return out; // no-warning
9}
10
George Karpenkov7744c7f2018-05-31 00:28:13 +000011NSString* _Nonnull trust_instancemsg_annotation(NSString* _Nonnull param) {
12 NSString* out = [param stringByAppendingString:@"string"];
13 if (out) {}
14 return out; // no-warning
15}
16
17NSString* _Nonnull distrust_instancemsg_noannotation(NSString* param) {
18 if (param) {}
19 NSString* out = [param stringByAppendingString:@"string"];
20 if (out) {}
21 return out; // expected-warning{{}}
22}
23
24NSString* _Nonnull trust_analyzer_knowledge(NSString* param) {
25 if (!param)
26 return @"";
27 NSString* out = [param stringByAppendingString:@"string"];
28 if (out) {}
29 return out; // no-warning
30}
31
32NSString* _Nonnull trust_assume_nonnull_macro() {
33 NSString* out = [NSString generateImplicitlyNonnullString];
34 if (out) {}
35 return out; // no-warning
36}
37
George Karpenkov2301c5a2018-03-23 00:16:03 +000038NSString* _Nonnull distrust_without_annotation() {
39 NSString* out = [NSString generatePossiblyNullString];
40 if (out) {}
41 return out; // expected-warning{{}}
42}
43
44NSString* _Nonnull nonnull_please_trust_me();
45
46NSString* _Nonnull distrust_local_nonnull_annotation() {
47 NSString* out = nonnull_please_trust_me();
48 if (out) {}
49 return out; // expected-warning{{}}
50}
51
52NSString* _Nonnull trust_c_function() {
53 NSString* out = getString();
54 if (out) {};
55 return out; // no-warning
56}
57
58NSString* _Nonnull distrust_unannoted_function() {
59 NSString* out = getPossiblyNullString();
60 if (out) {};
61 return out; // expected-warning{{}}
62}
63
64NSString * _Nonnull distrustProtocol(id<MyProtocol> o) {
65 NSString* out = [o getString];
66 if (out) {};
67 return out; // expected-warning{{}}
68}
George Karpenkov7744c7f2018-05-31 00:28:13 +000069