diff options
| author | George Karpenkov <ekarpenkov@apple.com> | 2018-03-06 00:18:21 +0000 |
|---|---|---|
| committer | George Karpenkov <ekarpenkov@apple.com> | 2018-03-06 00:18:21 +0000 |
| commit | 15e814f687e42c3bc41e6454c86087eb3373d39f (patch) | |
| tree | f3173d34e4b5e47d81c8a8f3c9cd61ec46c1ca03 /clang/test/gcdasyncsemaphorechecker_test.m | |
| parent | 39e54cb7b750b6d95214299bae309b5e07e23835 (diff) | |
| download | bcm5719-llvm-15e814f687e42c3bc41e6454c86087eb3373d39f.tar.gz bcm5719-llvm-15e814f687e42c3bc41e6454c86087eb3373d39f.zip | |
[analyzer] [quickfix] Prevent a crash in NamedDecl::getName()
llvm-svn: 326755
Diffstat (limited to 'clang/test/gcdasyncsemaphorechecker_test.m')
| -rw-r--r-- | clang/test/gcdasyncsemaphorechecker_test.m | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/clang/test/gcdasyncsemaphorechecker_test.m b/clang/test/gcdasyncsemaphorechecker_test.m index e65ae3d7feb..a82545a3b6a 100644 --- a/clang/test/gcdasyncsemaphorechecker_test.m +++ b/clang/test/gcdasyncsemaphorechecker_test.m @@ -1,5 +1,14 @@ // RUN: %clang_analyze_cc1 -analyzer-checker=core,alpha.osx.GCDAsyncSemaphore %s -fblocks -verify -// +typedef signed char BOOL; +@protocol NSObject - (BOOL)isEqual:(id)object; @end +@interface NSObject <NSObject> {} ++(id)alloc; +-(id)init; +-(id)autorelease; +-(id)copy; +-(id)retain; +@end + typedef int dispatch_semaphore_t; typedef void (^block_t)(); @@ -166,4 +175,29 @@ void warn_with_cast() { dispatch_semaphore_wait((int)sema, 100); // expected-warning{{Possible semaphore performance anti-pattern}} } +@interface Test1 : NSObject +-(void)use_method_warn; +-(void)testNoWarn; +@end + +@implementation Test1 + +-(void)use_method_warn { + 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}} +} + +-(void)testNoWarn { + dispatch_semaphore_t sema = dispatch_semaphore_create(0); + + func(^{ + dispatch_semaphore_signal(sema); + }); + dispatch_semaphore_wait(sema, 100); +} +@end |

