| // RUN: %clang_cc1 -fsyntax-only -fobjc-default-synthesize-properties -verify -Wno-objc-root-class %s |
| @interface I |
| { |
| } |
| @property int IP; |
| @end |
| |
| @implementation I |
| @synthesize IP; |
| - (int) Meth { |
| return IP; |
| } |
| @end |
| |
| // rdar://7823675 |
| int f0(I *a) { return a->IP; } // expected-error {{instance variable 'IP' is private}} |
| |
| // rdar://8769582 |
| |
| @interface I1 { |
| int protected_ivar; |
| } |
| @property int PROP_INMAIN; |
| @end |
| |
| @interface I1() { |
| int private_ivar; |
| } |
| @property int PROP_INCLASSEXT; |
| @end |
| |
| @implementation I1 |
| - (int) Meth { |
| _PROP_INMAIN = 1; |
| _PROP_INCLASSEXT = 2; |
| protected_ivar = 1; // OK |
| return private_ivar; // OK |
| } |
| @end |
| |
| |
| @interface DER : I1 |
| @end |
| |
| @implementation DER |
| - (int) Meth { |
| protected_ivar = 1; // OK |
| _PROP_INMAIN = 1; // expected-error {{instance variable '_PROP_INMAIN' is private}} |
| _PROP_INCLASSEXT = 2; // expected-error {{instance variable '_PROP_INCLASSEXT' is private}} |
| return private_ivar; // expected-error {{instance variable 'private_ivar' is private}} |
| } |
| @end |
| |
| @interface A |
| @property (weak) id testObjectWeakProperty; // expected-note {{declared here}} |
| @end |
| |
| @implementation A |
| // rdar://9605088 |
| @synthesize testObjectWeakProperty; // expected-error {{@synthesize of 'weak' property is only allowed in ARC or GC mode}} |
| @end |