diff options
| author | Anna Zaks <ganna@apple.com> | 2015-11-11 00:49:22 +0000 |
|---|---|---|
| committer | Anna Zaks <ganna@apple.com> | 2015-11-11 00:49:22 +0000 |
| commit | de14eb5b4e73ae809997c8f40517dbdcf97b00ea (patch) | |
| tree | 63f06c0f0790fa946eab4a3d47fa24ddb5a88126 | |
| parent | 2c98d0f47749803c667f629a3805c7dcb7566c92 (diff) | |
| download | bcm5719-llvm-de14eb5b4e73ae809997c8f40517dbdcf97b00ea.tar.gz bcm5719-llvm-de14eb5b4e73ae809997c8f40517dbdcf97b00ea.zip | |
[static analyzer] Don't flag nil storage into NSMutableDictionary.
This is now allowed and has the behavior of removing the mapping.
llvm-svn: 252679
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp | 3 | ||||
| -rw-r--r-- | clang/test/Analysis/NSContainers.m | 3 |
2 files changed, 2 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp b/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp index e157478433c..fd08b0239b3 100644 --- a/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp @@ -307,8 +307,7 @@ void NilArgChecker::checkPreObjCMessage(const ObjCMethodCall &msg, warnIfNilArg(C, msg, /* Arg */1, Class); } else if (S == SetObjectForKeyedSubscriptSel) { CanBeSubscript = true; - Arg = 0; - warnIfNilArg(C, msg, /* Arg */1, Class, CanBeSubscript); + Arg = 1; } else if (S == RemoveObjectForKeySel) { Arg = 0; } diff --git a/clang/test/Analysis/NSContainers.m b/clang/test/Analysis/NSContainers.m index d04b331bf7f..c868459999d 100644 --- a/clang/test/Analysis/NSContainers.m +++ b/clang/test/Analysis/NSContainers.m @@ -155,13 +155,12 @@ void testNilArgNSMutableDictionary3(NSMutableDictionary *d) { } void testNilArgNSMutableDictionary5(NSMutableDictionary *d, NSString* key) { - d[key] = 0; // expected-warning {{Value stored into 'NSMutableDictionary' cannot be nil}} + d[key] = 0; // no-warning - removing the mapping for the given key } void testNilArgNSMutableDictionary6(NSMutableDictionary *d, NSString *key) { if (key) ; d[key] = 0; // expected-warning {{'NSMutableDictionary' key cannot be nil}} - // expected-warning@-1 {{Value stored into 'NSMutableDictionary' cannot be nil}} } NSDictionary *testNilArgNSDictionary1(NSString* key) { |

