summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/reference.mm
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2013-04-03 19:28:19 +0000
committerAnna Zaks <ganna@apple.com>2013-04-03 19:28:19 +0000
commitc610bcacdea31a03104a7456cff63b37aca62c54 (patch)
tree15fe6a3addcfcfdf8c145b1e7fc75f121220672b /clang/test/Analysis/reference.mm
parentb5d2fe8a1d94bfd0a44c3de6f32d4afc1786eb11 (diff)
downloadbcm5719-llvm-c610bcacdea31a03104a7456cff63b37aca62c54.tar.gz
bcm5719-llvm-c610bcacdea31a03104a7456cff63b37aca62c54.zip
[analyzer] Warn when nil receiver results in forming null reference
This also allows us to ensure IDC/return null suppression gets triggered in such cases. llvm-svn: 178686
Diffstat (limited to 'clang/test/Analysis/reference.mm')
-rw-r--r--clang/test/Analysis/reference.mm17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Analysis/reference.mm b/clang/test/Analysis/reference.mm
new file mode 100644
index 00000000000..c5546aac5fc
--- /dev/null
+++ b/clang/test/Analysis/reference.mm
@@ -0,0 +1,17 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify -Wno-null-dereference %s
+
+@interface Foo
+- (int &)ref;
+@end
+
+Foo *getFoo() { return 0; }
+
+void testNullPointerSuppression() {
+ getFoo().ref = 1;
+}
+
+void testPositiveNullReference() {
+ Foo *x = 0;
+ x.ref = 1; // expected-warning {{The receiver of message 'ref' is nil, which results in forming a null reference}}
+}
+
OpenPOWER on IntegriCloud