blob: 44645613e314b968e1844ac9a4b181a80e7d6bd6 [file] [log] [blame]
Richard Trieu1e632af2014-01-28 23:40:26 +00001// RUN: %clang_cc1 -fsyntax-only -verify -Wobjc-literal-conversion %s
2
3@class NSString;
4
5@interface NSNumber
6+ (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@end
13
14@interface NSArray
15+ (id)arrayWithObjects:(const id [])objects count:(int)cnt;
16@end
17
18@interface NSDictionary
19+ (id)dictionaryWithObjects:(const id [])objects forKeys:(const id [])keys count:(unsigned long)cnt;
20@end
21
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}