warn-objc-literal-conversion.mm revision 651f13cea278ec967336033dd032faef0e9fc2ec
11d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert// RUN: %clang_cc1 -fsyntax-only -verify -Wobjc-literal-conversion %s 21d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 31d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@class NSString; 41d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 51d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@interface NSNumber 61d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithChar:(char)value; 71d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithInt:(int)value; 81d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithLongLong:(long long)value; 91d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithFloat:(float)value; 101d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithDouble:(double)value; 111d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (NSNumber *)numberWithBool:(bool)value; 121d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@end 131d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 141d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@interface NSArray 151d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (id)arrayWithObjects:(const id [])objects count:(int)cnt; 161d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@end 171d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 181d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@interface NSDictionary 191d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt; 201d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert@end 211d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 221d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertvoid char_test() { 231d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@'a') {} 241d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 251d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 261d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 271d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertvoid int_test() { 281d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@12) {} 291d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 301d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@-12) {} 311d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 321d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@12LL) {} 331d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 341d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@-12LL) {} 351d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 361d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 371d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 381d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertvoid float_test() { 391d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@12.55) {} 401d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 411d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@-12.55) {} 421d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 431d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@12.55F) {} 441d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 451d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@-12.55F) {} 461d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 471d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 481d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 491d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertvoid bool_test() { 501d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@true) {} 511d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 521d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@false) {} 531d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 541d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 551d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 561d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringertvoid string_test() { 571d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert if (@"asdf") {} 581d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert // expected-warning@-1{{implicit boolean conversion of Objective-C object literal always evaluates to true}} 591d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert} 601d580d0f6ee4f21eb309ba7b509d2c6d671c4044Bjorn Bringert 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