// RUN: %clang_cc1 -triple i386-apple-darwin9 -fobjc-runtime=macosx-fragile-10.5 -fsyntax-only -verify -Wno-objc-root-class %s @interface I { int IVAR; // expected-note{{instance variable is declared here}} int name; } @property int d1; @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 non-GC object}} @property int name; @end @interface I(CAT) @property int d1; @end @implementation I @synthesize d1; // expected-error {{synthesized property 'd1' must either be named the same as}} @dynamic bad; // expected-error {{property implementation must have its declaration in interface 'I'}} @synthesize prop_id; // expected-error {{synthesized property 'prop_id' must either be named the same}} // expected-note {{previous declaration is here}} @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}} @synthesize name; // OK! property with same name as an accessible ivar of same name @end @implementation I(CAT) @synthesize d1; // expected-error {{@synthesize not allowed in a category's implementation}} @dynamic bad; // expected-error {{property implementation must have its declaration in the category 'CAT'}} @end @implementation E // expected-warning {{cannot find interface declaration for 'E'}} @dynamic d; // expected-error {{property implementation must have its declaration in interface 'E'}} @end @implementation Q(MYCAT) // expected-error {{cannot find interface declaration for 'Q'}} @dynamic d; // expected-error {{property implementation in a category with no category declaration}} @end @interface Foo @property double bar; @end int func1() { id foo; double bar = [foo bar]; return 0; } // PR3932 typedef id BYObjectIdentifier; @interface Foo1 { void *isa; } @property(copy) BYObjectIdentifier identifier; @end @interface Foo2 { int ivar; } @property int treeController; // expected-note {{property declared here}} @property int ivar; // OK @property int treeController; // expected-error {{property has a previous declaration}} @end // rdar://10127639 @synthesize window; // expected-error {{missing context for property implementation declaration}} // rdar://10408414 Class test6_getClass(); @interface Test6 @end @implementation Test6 + (float) globalValue { return 5.0f; } + (float) gv { return test6_getClass().globalValue; } @end @interface Test7 @property unsigned length; @end void test7(Test7 *t) { char data[t.length] = {}; // expected-error {{variable-sized object may not be initialized}} }