blob: 7729753fb90e66d51de6d1b976388446362619d0 [file] [log] [blame]
Argyrios Kyrtzidisf5343ff2012-05-15 19:17:44 +00001// RUN: %clang_cc1 -fsyntax-only -verify -Wattributes %s
2
3typedef long NSInteger;
4typedef unsigned long NSUInteger;
5typedef signed char BOOL;
6
7@interface NSNumber
8@end
9@interface NSNumber (NSNumberCreation)
10+ (NSNumber *)numberWithChar:(char)value;
11+ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
12+ (NSNumber *)numberWithShort:(short)value;
13+ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
14+ (NSNumber *)numberWithInt:(int)value;
15+ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
16+ (NSNumber *)numberWithLong:(long)value;
17+ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
18+ (NSNumber *)numberWithLongLong:(long long)value;
19+ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
20+ (NSNumber *)numberWithFloat:(float)value;
21+ (NSNumber *)numberWithDouble:(double)value;
22+ (NSNumber *)numberWithBool:(BOOL)value;
23+ (NSNumber *)numberWithInteger:(NSInteger)value;
24+ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
25@end
26
27typedef struct {
28 int x, y, z;
29} point;
30
31void testStruct() {
32 point p = { 0, 0, 0 };
33 id boxed = @(p); // expected-error {{illegal type 'point' used in a boxed expression}}
34}
35
36void testPointers() {
37 void *null = 0;
38 id boxed_null = @(null); // expected-error {{illegal type 'void *' used in a boxed expression}}
39 int numbers[] = { 0, 1, 2 };
40 id boxed_numbers = @(numbers); // expected-error {{illegal type 'int *' used in a boxed expression}}
41}
42
43void testInvalid() {
44 @(not_defined); // expected-error {{use of undeclared identifier 'not_defined'}}
45}
46
47enum MyEnum {
48 ME_foo
49};
50
51enum ForwE; // expected-error {{ISO C++ forbids forward references to 'enum' types}}
52
53void testEnum(void *p) {
54 enum MyEnum myen;
55 id box = @(myen);
56 box = @(ME_foo);
57 box = @(*(enum ForwE*)p); // expected-error {{incomplete type 'enum ForwE' used in a boxed expression}}
58}