[clang] Handle __declspec() attributes in using
[llvm-project.git] / clang / test / SemaObjC / ivar-in-class-extension.m
blobdc5cf6abf677690cf3d08f78a54e248d9716b622
1 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
3 @interface SomeClass  @end
5 int 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'}}
10 @interface SomeClass () {
11 // @private by default
12         int privateIvar;
13 @public
14         int publicIvar;
16 @end
18 int fn2(SomeClass *obj) {
19         obj->publicIvar = 1;
20         return obj->publicIvar    // ok
21              + obj->privateIvar;  // expected-error {{instance variable 'privateIvar' is private}}
24 @implementation SomeClass
26 int fn3(SomeClass *obj) {
27         obj->privateIvar = 2;
28         return obj->publicIvar    // ok
29              + obj->privateIvar;  // ok
30     }
31 @end
33 @interface SomeClass (Category)
34     {   
35         int categoryIvar; // expected-error {{instance variables may not be placed in categories}}
36     }
37 @end
39 @interface SomeClass (Category1)
40     {   
41     }
42 @end