diff options
Diffstat (limited to 'clang/test')
-rw-r--r-- | clang/test/Analysis/inlining/false-positive-suppression.m | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/clang/test/Analysis/inlining/false-positive-suppression.m b/clang/test/Analysis/inlining/false-positive-suppression.m index 53ec138367e..7be1cb8472f 100644 --- a/clang/test/Analysis/inlining/false-positive-suppression.m +++ b/clang/test/Analysis/inlining/false-positive-suppression.m @@ -36,3 +36,39 @@ void testNilReceiver(int coin) { else testNilReceiverHelperB([[x getObject] getPtr]); } + +// FALSE NEGATIVES (over-suppression) + +__attribute__((objc_root_class)) +@interface SomeClass +-(int *)methodReturningNull; + +@property(readonly) int *propertyReturningNull; + +@end + +@implementation SomeClass +-(int *)methodReturningNull { + return 0; +} + +-(int *)propertyReturningNull { + return 0; +} +@end + +void testMethodReturningNull(SomeClass *sc) { + int *result = [sc methodReturningNull]; + *result = 1; +#ifndef SUPPRESSED + // expected-warning@-2 {{Dereference of null pointer}} +#endif +} + +void testPropertyReturningNull(SomeClass *sc) { + int *result = sc.propertyReturningNull; + *result = 1; +#ifndef SUPPRESSED + // expected-warning@-2 {{Dereference of null pointer}} +#endif +} |