blob: 683a78feef21b275c95ac355d7537d19432fa74e [file] [log] [blame]
Fariborz Jahanianafe13862010-02-23 01:26:30 +00001// RUN: %clang_cc1 -fsyntax-only -fobjc-nonfragile-abi2 -verify %s
2
3@interface SomeClass @end
4
5int fn1(SomeClass *obj) {
6 obj->privateIvar = 1; // expected-error {{'SomeClass' does not have a member named 'privateIvar}}
7 return obj->publicIvar; // expected-error {{'SomeClass' does not have a member named 'publicIvar'}}
8}
9
10@interface SomeClass () {
11// @private by default
12 int privateIvar;
13@public
14 int publicIvar;
15}
16@end
17
18int fn2(SomeClass *obj) {
19 obj->publicIvar = 1;
20 return obj->publicIvar // ok
21 + obj->privateIvar; // expected-error {{instance variable 'privateIvar' is private}}
22}
23
24@implementation SomeClass
25
26int fn3(SomeClass *obj) {
27 obj->privateIvar = 2;
28 return obj->publicIvar // ok
29 + obj->privateIvar; // ok
30 }
31@end
32
33@interface SomeClass (Category)
34 { // expected-error {{ivar may be placed in a class extension}}
35 int categoryIvar;
36 }
37@end
38
39@interface SomeClass (Category1)
40 { // expected-error {{ivar may be placed in a class extension}}
41 }
42@end