diff options
Diffstat (limited to 'test/Analysis/properties.m')
-rw-r--r-- | test/Analysis/properties.m | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/test/Analysis/properties.m b/test/Analysis/properties.m index 6d04a4a..4aa9180 100644 --- a/test/Analysis/properties.m +++ b/test/Analysis/properties.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify %s +// RUN: %clang_cc1 -analyze -analyzer-checker=core,osx.cocoa.RetainCount -analyzer-store=region -verify -Wno-objc-root-class %s typedef signed char BOOL; typedef unsigned int NSUInteger; @@ -143,3 +143,26 @@ void rdar6611873() { return super.name; } @end + +// <rdar://problem/9241180> Static analyzer doesn't detect uninitialized variable issues for property accesses +@interface RDar9241180 +@property (readwrite,assign) id x; +-(id)testAnalyzer1:(int) y; +-(void)testAnalyzer2; +@end + +@implementation RDar9241180 +@synthesize x; +-(id)testAnalyzer1:(int)y { + RDar9241180 *o; + if (y && o.x) // expected-warning {{Property access on an uninitialized object pointer}} + return o; + return o; // expected-warning {{Undefined or garbage value returned to caller}} +} +-(void)testAnalyzer2 { + id y; + self.x = y; // expected-warning {{Argument for property setter is an uninitialized value}} +} +@end + + |