75 lines · plain
1// RUN: %clang_cc1 -fsyntax-only -verify -Wobjc-literal-conversion %s2 3@class NSString;4 5@interface NSNumber6+ (NSNumber *)numberWithChar:(char)value;7+ (NSNumber *)numberWithInt:(int)value;8+ (NSNumber *)numberWithLongLong:(long long)value;9+ (NSNumber *)numberWithFloat:(float)value;10+ (NSNumber *)numberWithDouble:(double)value;11+ (NSNumber *)numberWithBool:(bool)value;12@end13 14@interface NSArray15+ (id)arrayWithObjects:(const id [])objects count:(int)cnt;16@end17 18@interface NSDictionary19+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;20@end21 22void char_test() {23 if (@'a') {}24 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}25}26 27void int_test() {28 if (@12) {}29 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}30 if (@-12) {}31 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}32 if (@12LL) {}33 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}34 if (@-12LL) {}35 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}36}37 38void float_test() {39 if (@12.55) {}40 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}41 if (@-12.55) {}42 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}43 if (@12.55F) {}44 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}45 if (@-12.55F) {}46 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}47}48 49void bool_test() {50 if (@true) {}51 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}52 if (@false) {}53 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}54}55 56void string_test() {57 if (@"asdf") {}58 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}59}60 61void array_test() {62 if (@[ @313, @331, @367, @379 ]) {}63 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}64}65 66void dictionary_test() {67 if (@{ @0: @0, @1: @1, @2: @1, @3: @3 }) {}68 // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}}69}70 71void objc_bool_test () {72 if (__objc_yes) {}73 if (__objc_no) {}74}75