blob: 42604ef4a6a51656c6df43cfdc03c7516ac3f245 [file] [log] [blame]
Alex Lorenz49370ac2017-11-08 21:33:15 +00001// RUN: %clang_cc1 -fblocks -fobjc-arc -Wnullable-to-nonnull-conversion -fsyntax-only -verify -Wno-objc-root-class %s
2// RUN: %clang_cc1 -fblocks -fobjc-arc -Wnullable-to-nonnull-conversion -fsyntax-only -verify -Wno-objc-root-class -DNOWARN %s
3
4@interface NSString
5
6+ (NSString*
7#ifndef NOWARN
8 _Nullable
9#else
10 _Nonnull
11#endif
12) stringWithUTF8String:(const char*)x;
13
14@end
15
16void takesNonNull(NSString * _Nonnull ptr);
17
18void testBoxedString() {
19 const char *str = "hey";
20 takesNonNull([NSString stringWithUTF8String:str]);
21 takesNonNull(@(str));
22#ifndef NOWARN
23 // expected-warning@-3 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
24 // expected-warning@-3 {{implicit conversion from nullable pointer 'NSString * _Nullable' to non-nullable pointer type 'NSString * _Nonnull'}}
25#else
26 // expected-no-diagnostics
27#endif
28}