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