150
|
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
|
2
|
|
3 @interface ReadOnly
|
|
4 {
|
|
5 id _object;
|
|
6 id _object1;
|
|
7 }
|
|
8 @property(readonly) id object;
|
|
9 @property(readwrite, assign) id object1; // expected-note {{property declared here}}
|
|
10 @property (readonly) int indentLevel;
|
|
11 @end
|
|
12
|
|
13 @interface ReadOnly ()
|
|
14 @property(readwrite, copy) id object; // Ok. declaring memory model in class extension - primary has none.
|
|
15 @property(readonly) id object1; // expected-error {{illegal redeclaration of property in class extension 'ReadOnly' (attribute must be 'readwrite', while its primary must be 'readonly')}}
|
|
16 @property (readwrite, assign) int indentLevel; // OK. assign the default in any case.
|
|
17 @end
|
|
18
|
|
19 @protocol Proto
|
|
20 @property (copy) id fee; // expected-note {{property declared here}}
|
|
21 @end
|
|
22
|
|
23 @protocol Foo<Proto>
|
|
24 @property (copy) id foo; // expected-note {{property declared here}}
|
|
25 @end
|
|
26
|
|
27 @interface Bar <Foo> {
|
|
28 id _foo;
|
|
29 id _fee;
|
|
30 }
|
|
31 @end
|
|
32
|
|
33 @interface Bar ()
|
|
34 @property (copy) id foo; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}}
|
|
35 @property (copy) id fee; // expected-error {{illegal redeclaration of property in class extension 'Bar' (attribute must be 'readwrite', while its primary must be 'readonly')}}
|
|
36 @end
|
|
37
|
|
38 @implementation Bar
|
|
39 @synthesize foo = _foo;
|
|
40 @synthesize fee = _fee;
|
|
41 @end
|
|
42
|
|
43 // rdar://10752081
|
|
44 @interface MyOtherClass() // expected-error {{cannot find interface declaration for 'MyOtherClass'}}
|
|
45 {
|
|
46 id array;
|
|
47 }
|
|
48 @end
|
|
49
|
|
50 @implementation MyOtherClass // expected-warning {{cannot find interface declaration for 'MyOtherClass'}}
|
|
51 @end
|