r194005 - [analyzer] Track the count of NSOrderedSet similarly to other fast enumerations.
Anna Zaks
ganna at apple.com
Mon Nov 4 11:13:08 PST 2013
Author: zaks
Date: Mon Nov 4 13:13:08 2013
New Revision: 194005
URL: http://llvm.org/viewvc/llvm-project?rev=194005&view=rev
Log:
[analyzer] Track the count of NSOrderedSet similarly to other fast enumerations.
Modified:
cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
cfe/trunk/test/Analysis/NSContainers.m
Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp?rev=194005&r1=194004&r2=194005&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/BasicObjCFoundationChecks.cpp Mon Nov 4 13:13:08 2013
@@ -1000,7 +1000,8 @@ void ObjCLoopChecker::checkPostObjCMessa
FoundationClass Class = findKnownClass(ClassID);
if (Class != FC_NSDictionary &&
Class != FC_NSArray &&
- Class != FC_NSSet)
+ Class != FC_NSSet &&
+ Class != FC_NSOrderedSet)
return;
SymbolRef ContainerS = M.getReceiverSVal().getAsSymbol();
Modified: cfe/trunk/test/Analysis/NSContainers.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NSContainers.m?rev=194005&r1=194004&r2=194005&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NSContainers.m (original)
+++ cfe/trunk/test/Analysis/NSContainers.m Mon Nov 4 13:13:08 2013
@@ -90,6 +90,12 @@ typedef struct {
@end
+ at interface NSOrderedSet : NSObject <NSFastEnumeration>
+ at end
+ at interface NSOrderedSet (NSOrderedSetCreation)
+- (NSUInteger)count;
+ at end
+
@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding>
@end
@@ -260,4 +266,13 @@ void testCollectionIsNotEmptyWhenCountIs
}
}
+void testCountAwareNSOrderedSet(NSOrderedSet *containers, int *validptr) {
+ int *x = 0;
+ NSUInteger containerCount = [containers count];
+ if (containerCount > 0)
+ x = validptr;
+ for (id c in containers) {
+ *x = 1; // no warning
+ }
+}
More information about the cfe-commits
mailing list