1*67e74705SXin Li// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes %s 2*67e74705SXin Li 3*67e74705SXin Litypedef long NSInteger; 4*67e74705SXin Litypedef unsigned long NSUInteger; 5*67e74705SXin Litypedef signed char BOOL; 6*67e74705SXin Li 7*67e74705SXin Li@interface NSNumber 8*67e74705SXin Li@end 9*67e74705SXin Li@interface NSNumber (NSNumberCreation) 10*67e74705SXin Li+ (NSNumber *)numberWithChar:(char)value; 11*67e74705SXin Li+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value; 12*67e74705SXin Li+ (NSNumber *)numberWithShort:(short)value; 13*67e74705SXin Li+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value; 14*67e74705SXin Li+ (NSNumber *)numberWithInt:(int)value; 15*67e74705SXin Li+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value; 16*67e74705SXin Li+ (NSNumber *)numberWithLong:(long)value; 17*67e74705SXin Li+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value; 18*67e74705SXin Li+ (NSNumber *)numberWithLongLong:(long long)value; 19*67e74705SXin Li+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value; 20*67e74705SXin Li+ (NSNumber *)numberWithFloat:(float)value; 21*67e74705SXin Li+ (NSNumber *)numberWithDouble:(double)value; 22*67e74705SXin Li+ (NSNumber *)numberWithBool:(BOOL)value; 23*67e74705SXin Li+ (NSNumber *)numberWithInteger:(NSInteger)value; 24*67e74705SXin Li+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value; 25*67e74705SXin Li@end 26*67e74705SXin Li 27*67e74705SXin Litypedef struct { 28*67e74705SXin Li int x, y, z; 29*67e74705SXin Li} point; 30*67e74705SXin Li 31*67e74705SXin Livoid testStruct() { 32*67e74705SXin Li point p = { 0, 0, 0 }; 33*67e74705SXin Li id boxed = @(p); // expected-error {{illegal type 'point' used in a boxed expression}} 34*67e74705SXin Li} 35*67e74705SXin Li 36*67e74705SXin Livoid testPointers() { 37*67e74705SXin Li void *null = 0; 38*67e74705SXin Li id boxed_null = @(null); // expected-error {{illegal type 'void *' used in a boxed expression}} 39*67e74705SXin Li int numbers[] = { 0, 1, 2 }; 40*67e74705SXin Li id boxed_numbers = @(numbers); // expected-error {{illegal type 'int *' used in a boxed expression}} 41*67e74705SXin Li} 42*67e74705SXin Li 43*67e74705SXin Livoid testInvalid() { 44*67e74705SXin Li @(not_defined); // expected-error {{use of undeclared identifier 'not_defined'}} 45*67e74705SXin Li} 46*67e74705SXin Li 47*67e74705SXin Lienum MyEnum { 48*67e74705SXin Li ME_foo 49*67e74705SXin Li}; 50*67e74705SXin Li 51*67e74705SXin Lienum ForwE; 52*67e74705SXin Li 53*67e74705SXin Livoid testEnum(void *p) { 54*67e74705SXin Li enum MyEnum myen; 55*67e74705SXin Li id box = @(myen); 56*67e74705SXin Li box = @(ME_foo); 57*67e74705SXin Li box = @(*(enum ForwE*)p); // expected-error {{incomplete type 'enum ForwE' used in a boxed expression}} 58*67e74705SXin Li} 59*67e74705SXin Li 60*67e74705SXin Li// rdar://13333205 61*67e74705SXin Li@class NSMutableDictionary; 62*67e74705SXin Li 63*67e74705SXin Li@interface NSMutableArray 64*67e74705SXin Li+ (NSMutableArray*) array; 65*67e74705SXin Li@end 66*67e74705SXin Li 67*67e74705SXin LiNSMutableDictionary* mBars; 68*67e74705SXin Li 69*67e74705SXin Li__attribute((objc_root_class)) @interface rdar13333205 @end 70*67e74705SXin Li 71*67e74705SXin Li@implementation rdar13333205 72*67e74705SXin Li- (void) insertBar:(id)preset ofKind:(id) kind atIndex:(int)index { 73*67e74705SXin Li NSMutableArray* presetArray = mBars[kind] ?: [NSMutableArray array]; // expected-error {{expected method to read dictionary element not found on object of type 'NSMutableDictionary *'}} 74*67e74705SXin Li} 75*67e74705SXin Li@end 76