43 lines
1,014 B
Mathematica
43 lines
1,014 B
Mathematica
|
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
||
|
|
||
|
@interface SomeClass @end
|
||
|
|
||
|
int fn1(SomeClass *obj) {
|
||
|
obj->privateIvar = 1; // expected-error {{'SomeClass' does not have a member named 'privateIvar}}
|
||
|
return obj->publicIvar; // expected-error {{'SomeClass' does not have a member named 'publicIvar'}}
|
||
|
}
|
||
|
|
||
|
@interface SomeClass () {
|
||
|
// @private by default
|
||
|
int privateIvar;
|
||
|
@public
|
||
|
int publicIvar;
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
int fn2(SomeClass *obj) {
|
||
|
obj->publicIvar = 1;
|
||
|
return obj->publicIvar // ok
|
||
|
+ obj->privateIvar; // expected-error {{instance variable 'privateIvar' is private}}
|
||
|
}
|
||
|
|
||
|
@implementation SomeClass
|
||
|
|
||
|
int fn3(SomeClass *obj) {
|
||
|
obj->privateIvar = 2;
|
||
|
return obj->publicIvar // ok
|
||
|
+ obj->privateIvar; // ok
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
@interface SomeClass (Category)
|
||
|
{
|
||
|
int categoryIvar; // expected-error {{instance variables may not be placed in categories}}
|
||
|
}
|
||
|
@end
|
||
|
|
||
|
@interface SomeClass (Category1)
|
||
|
{
|
||
|
}
|
||
|
@end
|