81 lines · plain
1// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify -Wno-objc-root-class %s2 3@interface I 4{5 int IVAR; // expected-note{{instance variable is declared here}}6 int name;7}8@property int d1;9@property id prop_id; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}}, expected-warning {{default property attribute 'assign' not appropriate for object}}10@property int name;11@end12 13@interface I(CAT)14@property int d1;15@end16 17@implementation I18@synthesize d1; // expected-error {{synthesized property 'd1' must either be named the same as}}19@dynamic bad; // expected-error {{property implementation must have its declaration in interface 'I'}}20@synthesize prop_id; // expected-error {{synthesized property 'prop_id' must either be named the same}} // expected-note {{previous declaration is here}}21@synthesize prop_id = IVAR; // expected-error {{type of property 'prop_id' ('id') does not match type of instance variable 'IVAR' ('int')}} // expected-error {{property 'prop_id' is already implemented}}22@synthesize name; // OK! property with same name as an accessible ivar of same name23@end24 25@implementation I(CAT) 26@synthesize d1; // expected-error {{@synthesize not allowed in a category's implementation}}27@dynamic bad; // expected-error {{property implementation must have its declaration in the category 'CAT'}}28@end29 30@implementation E // expected-warning {{cannot find interface declaration for 'E'}}31@dynamic d; // expected-error {{property implementation must have its declaration in interface 'E'}}32@end33 34@implementation Q(MYCAT) // expected-error {{cannot find interface declaration for 'Q'}}35@dynamic d; // expected-error {{property implementation in a category with no category declaration}}36@end37 38@interface Foo39@property double bar;40@end41 42int func1(void) {43 id foo;44 double bar = [foo bar];45 return 0;46}47 48// PR393249typedef id BYObjectIdentifier;50@interface Foo1 {51 void *isa;52}53@property(copy) BYObjectIdentifier identifier;54@end55 56@interface Foo2 57{58 int ivar;59}60@property int treeController; // expected-note {{property declared here}}61@property int ivar; // OK62@property int treeController; // expected-error {{property has a previous declaration}}63@end64 65@synthesize window; // expected-error {{missing context for property implementation declaration}}66 67Class test6_getClass(void);68@interface Test669@end70@implementation Test671+ (float) globalValue { return 5.0f; }72+ (float) gv { return test6_getClass().globalValue; }73@end74 75@interface Test776@property unsigned length;77@end78void test7(Test7 *t) {79 char data[t.length] = {};80}81