]> granicus.if.org Git - clang/commitdiff
objective-C: don't warn about class extension property's
authorFariborz Jahanian <fjahanian@apple.com>
Mon, 17 Sep 2012 23:57:35 +0000 (23:57 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Mon, 17 Sep 2012 23:57:35 +0000 (23:57 +0000)
missing 'assign' attribute as it is determined by its
overridden property in primary class. // rdar://12214070

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164080 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaObjCProperty.cpp
test/SemaObjC/property-in-class-extension-1.m

index 131c48f0125ca5317da864a9db959d4bc114091e..0f6ae4c7c7e44048ade785918c8504d88e7726e9 100644 (file)
@@ -2159,7 +2159,9 @@ void Sema::CheckObjCPropertyAttributes(Decl *PDecl,
         // issue any warning.
         if (isAnyClassTy && getLangOpts().getGC() == LangOptions::NonGC)
           ;
-        else {
+        else if (propertyInPrimaryClass) {
+          // Don't issue warning on property with no life time in class 
+          // extension as it is inherited from property in primary class.
           // Skip this warning in gc-only mode.
           if (getLangOpts().getGC() != LangOptions::GCOnly)
             Diag(Loc, diag::warn_objc_property_no_assignment_attribute);
index 18eae24cc1bef725f0afd062ceb2ef96d6b03709..ab461ef6c191840a975a0d3d5df81037fbedaed1 100644 (file)
 
 @property (nonatomic, copy) NSString* addingMemoryModel;
 @property (nonatomic, copy) NSString* matchingMemoryModel;
-@property () NSString* addingNoNewMemoryModel; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}} \
-                                               // expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
-@property () NSString* none; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}} \
-                                               // expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
+@property () NSString* addingNoNewMemoryModel;
+@property () NSString* none;
 @property (readwrite, retain) NSString* none1;
 
 @property (retain) NSString* changeMemoryModel; // expected-warning {{property attribute in class extension does not match the primary class}}
-@property () __weak id weak_prop; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}} \
-                                  // expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
-@property (readwrite) __weak id weak_prop1; // expected-warning {{no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed}}\
-                                           // expected-warning {{default property attribute 'assign' not appropriate for non-GC object}}
+@property () __weak id weak_prop;
+@property (readwrite) __weak id weak_prop1;
 
 @property (assign, readwrite) NSString* assignProperty;
 @property (assign) NSString* readonlyProp;