forked from OSchip/llvm-project
39 lines
936 B
Objective-C
39 lines
936 B
Objective-C
// RUN: %clang_cc1 -triple i386-apple-darwin8 -analyze -analyzer-checker=core,core.experimental -analyzer-constraints=range -analyzer-store=region -verify %s
|
|
|
|
// <rdar://problem/6888289> - This test case shows that a nil instance
|
|
// variable can possibly be initialized by a method.
|
|
typedef struct RDar6888289_data {
|
|
long data[100];
|
|
} RDar6888289_data;
|
|
|
|
@interface RDar6888289
|
|
{
|
|
RDar6888289 *x;
|
|
}
|
|
- (RDar6888289_data) test;
|
|
- (RDar6888289_data) test2;
|
|
- (void) invalidate;
|
|
- (RDar6888289_data) getData;
|
|
@end
|
|
|
|
@implementation RDar6888289
|
|
- (RDar6888289_data) test {
|
|
if (!x)
|
|
[self invalidate];
|
|
return [x getData];
|
|
}
|
|
- (RDar6888289_data) test2 {
|
|
if (!x) {}
|
|
return [x getData]; // expected-warning{{The receiver of message 'getData' is nil and returns a value of type 'RDar6888289_data' that will be garbage}}
|
|
}
|
|
|
|
- (void) invalidate {
|
|
x = self;
|
|
}
|
|
|
|
- (RDar6888289_data) getData {
|
|
return (RDar6888289_data) { 0 };
|
|
}
|
|
@end
|
|
|