nonnull.m revision fe6a011a113b3ddcb32f42af152d7476054e7f79
1// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
2
3@interface MyObject
4- (void)takePointer:(void *)ptr __attribute__((nonnull(1)));
5@end
6
7void testNonNullMethod(int *p, MyObject *obj) {
8  if (p)
9    return;
10  [obj takePointer:p]; // expected-warning{{nonnull}}
11}
12
13
14@interface Subclass : MyObject
15// [[nonnull]] is an inherited attribute.
16- (void)takePointer:(void *)ptr;
17@end
18
19void testSubclass(int *p, Subclass *obj) {
20  if (p)
21    return;
22  [obj takePointer:p]; // expected-warning{{nonnull}}
23}
24