summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/gcdasyncsemaphorechecker_test.m
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Analysis/gcdasyncsemaphorechecker_test.m')
-rw-r--r--clang/test/Analysis/gcdasyncsemaphorechecker_test.m31
1 files changed, 31 insertions, 0 deletions
diff --git a/clang/test/Analysis/gcdasyncsemaphorechecker_test.m b/clang/test/Analysis/gcdasyncsemaphorechecker_test.m
index a82545a3b6a..ff434d3652d 100644
--- a/clang/test/Analysis/gcdasyncsemaphorechecker_test.m
+++ b/clang/test/Analysis/gcdasyncsemaphorechecker_test.m
@@ -177,7 +177,9 @@ void warn_with_cast() {
@interface Test1 : NSObject
-(void)use_method_warn;
+-(void)use_objc_callback_warn;
-(void)testNoWarn;
+-(void)acceptBlock:(block_t)callback;
@end
@implementation Test1
@@ -200,4 +202,33 @@ void warn_with_cast() {
dispatch_semaphore_wait(sema, 100);
}
+-(void)acceptBlock:(block_t) callback {
+ callback();
+}
+
+-(void)use_objc_callback_warn {
+ dispatch_semaphore_t sema = dispatch_semaphore_create(0);
+
+ [self acceptBlock:^{
+ dispatch_semaphore_signal(sema);
+ }];
+ dispatch_semaphore_wait(sema, 100); // expected-warning{{Possible semaphore performance anti-pattern}}
+}
+
+void use_objc_and_c_callback(Test1 *t) {
+ dispatch_semaphore_t sema = dispatch_semaphore_create(0);
+
+ func(^{
+ dispatch_semaphore_signal(sema);
+ });
+ dispatch_semaphore_wait(sema, 100); // expected-warning{{Possible semaphore performance anti-pattern}}
+
+ dispatch_semaphore_t sema1 = dispatch_semaphore_create(0);
+
+ [t acceptBlock:^{
+ dispatch_semaphore_signal(sema1);
+ }];
+ dispatch_semaphore_wait(sema1, 100); // expected-warning{{Possible semaphore performance anti-pattern}}
+}
+
@end
OpenPOWER on IntegriCloud