diff options
author | Fariborz Jahanian <fjahanian@apple.com> | 2013-02-14 19:07:19 +0000 |
---|---|---|
committer | Fariborz Jahanian <fjahanian@apple.com> | 2013-02-14 19:07:19 +0000 |
commit | 26202291b161f8598c0c342cba12c6552e44d44c (patch) | |
tree | 28002014819230f52e08411caa739e5200c9f9a4 /test/SemaObjC | |
parent | 697a68590a75f5cd2326c8f686a6c666b51688b6 (diff) |
objective-C: When implementing custom accessor method for
a property, the -Wdirect-ivar-access should not warn when
accessing the property's synthesized instance variable.
// rdar://13142820
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@175195 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaObjC')
-rw-r--r-- | test/SemaObjC/warn-direct-ivar-access.m | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/test/SemaObjC/warn-direct-ivar-access.m b/test/SemaObjC/warn-direct-ivar-access.m index 4f242e6b33..283a00faee 100644 --- a/test/SemaObjC/warn-direct-ivar-access.m +++ b/test/SemaObjC/warn-direct-ivar-access.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -Wdirect-ivar-access -verify -Wno-objc-root-class %s +// RUN: %clang_cc1 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -fobjc-default-synthesize-properties -Wdirect-ivar-access -verify -Wno-objc-root-class %s // rdar://6505197 __attribute__((objc_root_class)) @interface MyObject { @@ -54,3 +54,25 @@ id Test32(__weak ITest32 *x) { : (*x).ivar; // expected-error {{dereferencing a __weak pointer is not allowed}} } +// rdar://13142820 +@protocol PROTOCOL +@property (copy, nonatomic) id property_in_protocol; +@end + +__attribute__((objc_root_class)) @interface INTF <PROTOCOL> +@property (copy, nonatomic) id foo; +- (id) foo; +@end + +@interface INTF() +@property (copy, nonatomic) id foo1; +- (id) foo1; +@end + +@implementation INTF +- (id) foo { return _foo; } +- (id) property_in_protocol { return _property_in_protocol; } // expected-warning {{instance variable '_property_in_protocol' is being directly accessed}} +- (id) foo1 { return _foo1; } +@synthesize property_in_protocol = _property_in_protocol; +@end + |