blob: c9f138f4075216a38eb33ba43c8bb582e1cda96c [file] [log] [blame]
John McCalld1e40d52011-10-02 01:16:38 +00001// RUN: %clang_cc1 -fsyntax-only -verify %s
Fariborz Jahanian0e5ad252010-02-23 01:26:30 +00002
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)
Fariborz Jahanian0bd04592010-04-06 22:43:48 +000034 {
35 int categoryIvar; // expected-error {{ivars may not be placed in categories}}
Fariborz Jahanian0e5ad252010-02-23 01:26:30 +000036 }
37@end
38
39@interface SomeClass (Category1)
Fariborz Jahanian0bd04592010-04-06 22:43:48 +000040 {
Fariborz Jahanian0e5ad252010-02-23 01:26:30 +000041 }
42@end