]> granicus.if.org Git - clang/commitdiff
Update CF reference count checker test case to illustrate the use of
authorTed Kremenek <kremenek@apple.com>
Wed, 16 Apr 2008 04:29:21 +0000 (04:29 +0000)
committerTed Kremenek <kremenek@apple.com>
Wed, 16 Apr 2008 04:29:21 +0000 (04:29 +0000)
toll-free bridging.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@49772 91177308-0d34-0410-b5e6-96231b3b80d8

test/Analysis-Apple/CFDate.c [deleted file]
test/Analysis-Apple/CFDate.m [new file with mode: 0644]

diff --git a/test/Analysis-Apple/CFDate.c b/test/Analysis-Apple/CFDate.c
deleted file mode 100644 (file)
index 58b568b..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// RUN: clang -checker-cfref -verify %s
-
-#include <CoreFoundation/CFDate.h>
-
-CFAbsoluteTime f1() {
-  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
-  CFDateRef date = CFDateCreate(NULL, t);
-  CFRetain(date);
-  CFRelease(date);
-  CFDateGetAbsoluteTime(date);
-  CFRelease(date);
-  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released.}}
-  return t;
-}
-
diff --git a/test/Analysis-Apple/CFDate.m b/test/Analysis-Apple/CFDate.m
new file mode 100644 (file)
index 0000000..c79b253
--- /dev/null
@@ -0,0 +1,27 @@
+// RUN: clang -checker-cfref -verify %s
+
+#include <CoreFoundation/CFDate.h>
+#include <Foundation/NSDate.h>
+
+CFAbsoluteTime f1() {
+  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
+  CFDateRef date = CFDateCreate(NULL, t);
+  CFRetain(date);
+  CFRelease(date);
+  CFDateGetAbsoluteTime(date); // no-warning
+  CFRelease(date);
+  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released.}}
+  return t;
+}
+
+CFAbsoluteTime f2() {
+  CFAbsoluteTime t = CFAbsoluteTimeGetCurrent();
+  CFDateRef date = CFDateCreate(NULL, t);  
+  [((NSDate*) date) retain];
+  CFRelease(date);
+  CFDateGetAbsoluteTime(date); // no-warning
+  [((NSDate*) date) release];
+  t = CFDateGetAbsoluteTime(date);   // expected-warning{{Reference-counted object is used after it is released.}}
+  return t;
+}
+