1 | // RUN: %clang_cc1 -fobjc-arc -fobjc-runtime-has-weak -Wnullable-to-nonnull-conversion %s -verify |
2 | |
3 | |
4 | // rdar://19985330 |
5 | @interface NSObject @end |
6 | |
7 | @class NSFoo; |
8 | void foo (NSFoo * _Nonnull); |
9 | |
10 | @interface NSBar : NSObject |
11 | @property(weak) NSFoo *property1; |
12 | @end |
13 | |
14 | #pragma clang assume_nonnull begin |
15 | @interface NSBar () |
16 | @property(weak) NSFoo *property2; |
17 | @end |
18 | |
19 | #pragma clang assume_nonnull end |
20 | |
21 | @implementation NSBar |
22 | - (void) Meth { |
23 | foo (self.property1); // no warning because nothing is inferred |
24 | foo (self.property2); // expected-warning {{implicit conversion from nullable pointer 'NSFoo * _Nullable' to non-nullable pointer type 'NSFoo * _Nonnull'}} |
25 | } |
26 | @end |
27 | |