Patrick Beard | b2f6820 | 2012-04-06 18:12:22 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple i386-apple-darwin8 -analyze -analyzer-checker=core,experimental.core -analyzer-constraints=range -analyzer-store=region -verify -Wno-objc-root-class %s |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 2 | |
3 | // <rdar://problem/6888289> - This test case shows that a nil instance | ||||
4 | // variable can possibly be initialized by a method. | ||||
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 5 | @interface RDar6888289 |
6 | { | ||||
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 7 | id *x; |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 8 | } |
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 9 | - (void) test:(id) y; |
10 | - (void) test2:(id) y; | ||||
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 11 | - (void) invalidate; |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 12 | @end |
13 | |||||
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 14 | id *getVal(void); |
15 | |||||
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 16 | @implementation RDar6888289 |
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 17 | - (void) test:(id)y { |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 18 | if (!x) |
19 | [self invalidate]; | ||||
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 20 | *x = y; |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 21 | } |
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 22 | - (void) test2:(id)y { |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 23 | if (!x) {} |
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 24 | *x = y; // expected-warning {{null}} |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 25 | } |
26 | |||||
27 | - (void) invalidate { | ||||
Ted Kremenek | 4a037c7 | 2011-10-28 19:05:10 +0000 | [diff] [blame] | 28 | x = getVal(); |
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 29 | } |
30 | |||||
Ted Kremenek | f9eb0ae | 2011-02-12 01:25:04 +0000 | [diff] [blame] | 31 | @end |
32 |