1// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-objc-literal -emit-llvm -o - %s | FileCheck %s
2// RUN: %clang_cc1 -triple x86_64-apple-darwin10 -fdebugger-objc-literal -emit-llvm -o - %s -DINCLUDE_INTERFACES=1 | FileCheck %s
3
4// We need two different RUN lines here because the first time a class/method is absent,
5// it will be added for -fdebugger-objc-literal.
6
7#ifdef INCLUDE_INTERFACES
8@interface NSObject
9@end
10
11@interface NSNumber : NSObject
12@end
13
14@interface NSArray : NSObject
15@end
16
17@interface NSDictionary : NSObject
18@end
19
20@interface NSString : NSObject
21@end
22#endif
23
24int main() {
25  // object literals.
26  id l;
27  l = @'a';
28  l = @42;
29  l = @-42;
30  l = @42u;
31  l = @3.141592654f;
32  l = @__objc_yes;
33  l = @__objc_no;
34  l = @{ @"name":@666 };
35  l = @[ @"foo", @"bar" ];
36
37#if __has_feature(objc_boxed_expressions)
38  // boxed expressions.
39  id b;
40  b = @('a');
41  b = @(42);
42  b = @(-42);
43  b = @(42u);
44  b = @(3.141592654f);
45  b = @(__objc_yes);
46  b = @(__objc_no);
47  b = @("hello");
48#else
49#error "boxed expressions not supported"
50#endif
51}
52
53// CHECK: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]
54
55// CHECK: attributes [[NLB]] = { nonlazybind }
56