summaryrefslogtreecommitdiff
path: root/test/Analysis/nonnull.m
diff options
context:
space:
mode:
Diffstat (limited to 'test/Analysis/nonnull.m')
-rw-r--r--test/Analysis/nonnull.m23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/Analysis/nonnull.m b/test/Analysis/nonnull.m
new file mode 100644
index 000000000000..c32a7f780ece
--- /dev/null
+++ b/test/Analysis/nonnull.m
@@ -0,0 +1,23 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
+
+@interface MyObject
+- (void)takePointer:(void *)ptr __attribute__((nonnull(1)));
+@end
+
+void testNonNullMethod(int *p, MyObject *obj) {
+ if (p)
+ return;
+ [obj takePointer:p]; // expected-warning{{nonnull}}
+}
+
+
+@interface Subclass : MyObject
+// [[nonnull]] is an inherited attribute.
+- (void)takePointer:(void *)ptr;
+@end
+
+void testSubclass(int *p, Subclass *obj) {
+ if (p)
+ return;
+ [obj takePointer:p]; // expected-warning{{nonnull}}
+}