|
|
|
/*
|
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#import <Foundation/NSArray.h>
|
|
|
|
|
|
|
|
void bad1() {
|
|
|
|
|
|
|
|
NSNumber* n2;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
if (!n2) {
|
|
|
|
i = 0;
|
|
|
|
} else {
|
|
|
|
i = 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void bad2(NSArray* a, NSNumber* n) {
|
|
|
|
int i = 0;
|
|
|
|
for (; !n;) {
|
|
|
|
i = n.intValue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void bad3(NSArray* a, NSNumber* n) {
|
|
|
|
int i = 0;
|
|
|
|
while (!n) {
|
|
|
|
i = n.intValue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void good1(NSArray* a) {
|
|
|
|
int i = 0;
|
|
|
|
for (NSNumber* n in a) {
|
|
|
|
i = n.intValue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void good2() {
|
|
|
|
|
|
|
|
NSNumber* n2;
|
|
|
|
int i;
|
|
|
|
|
|
|
|
if (n2 != nil) {
|
|
|
|
i = 1;
|
|
|
|
} else {
|
|
|
|
i = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
int good3(NSNumber* number) {
|
|
|
|
if (number.doubleValue) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
|
|
|
@interface Simple : NSObject
|
|
|
|
|
|
|
|
@property(strong, atomic) NSNumber* number;
|
|
|
|
|
|
|
|
- (NSNumber*)fooWithCondition:(BOOL)number andNumber:(NSNumber*)number;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation Simple
|
|
|
|
|
|
|
|
- (NSNumber*)fooWithCondition:(BOOL)condition andNumber:(NSNumber*)number {
|
|
|
|
return number;
|
|
|
|
}
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
|
|
|
int bad4(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:true andNumber:number] < 19) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int good4(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:true andNumber:number].doubleValue) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad5(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:(number ? 1 : 2) andNumber:number] != nil) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad6(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:(number == nil ? 1 : 2) andNumber:number]) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int good5(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:(number == nil ? 1 : 2)
|
|
|
|
andNumber:number] != nil) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad8(NSNumber* number) {
|
|
|
|
if (number) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad9(NSNumber* number, Simple* simple) {
|
|
|
|
simple.number = simple.number ? simple.number : number;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad10(NSNumber* number, Simple* simple) {
|
|
|
|
if ([simple fooWithCondition:true andNumber:number]) {
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
int bad11(int i, NSNumber* number) {
|
|
|
|
if (i > 10) {
|
|
|
|
return 11;
|
|
|
|
} else if (number) {
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int good6(NSNumber* number) { return (number.integerValue > 5 ? 1 : 0); }
|
|
|
|
|
|
|
|
NSNumber* good7(NSNumber* number) {
|
|
|
|
return (number.integerValue > 5 ? number : @0);
|
|
|
|
}
|
|
|
|
|
|
|
|
NSNumber* bad12(NSNumber* number) {
|
|
|
|
return (number.integerValue > 5 ? (number ? @1 : @0) : @0);
|
|
|
|
}
|