From: Fariborz Jahanian Date: Fri, 10 Oct 2014 22:08:23 +0000 (+0000) Subject: Objective-C [qoi]. When reporting that a property is not X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=356de0fe6a992d808626ada693d3b89bf7b02f1a;p=clang Objective-C [qoi]. When reporting that a property is not auto synthesized because it is synthesized in its super class. locate property declaration in super class which will default synthesize the property. rdar://18488727 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219535 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp index cf9010f7fe..48aa18cd30 100644 --- a/lib/Sema/SemaObjCProperty.cpp +++ b/lib/Sema/SemaObjCProperty.cpp @@ -1584,6 +1584,7 @@ void Sema::DefaultSynthesizeProperties(Scope *S, ObjCImplDecl* IMPDecl, else { Diag(Prop->getLocation(), diag::warn_autosynthesis_property_in_superclass) << Prop->getIdentifier(); + Diag(PropInSuperClass->getLocation(), diag::note_property_declare); Diag(IMPDecl->getLocation(), diag::note_while_in_implementation); } continue; diff --git a/test/SemaObjC/attr-deprecated.m b/test/SemaObjC/attr-deprecated.m index 3e9157d096..4eb56ee7d7 100644 --- a/test/SemaObjC/attr-deprecated.m +++ b/test/SemaObjC/attr-deprecated.m @@ -197,7 +197,8 @@ __attribute__((deprecated)) @interface TestBase @property (nonatomic, strong) id object __attribute__((deprecated("deprecated"))); // expected-note {{'object' has been explicitly marked deprecated here}} \ expected-note {{property 'object' is declared deprecated here}} \ -expected-note {{'setObject:' has been explicitly marked deprecated here}} +expected-note {{'setObject:' has been explicitly marked deprecated here}} \ +expected-note {{property declared here}} @end @interface TestDerived : TestBase diff --git a/test/SemaObjC/default-synthesize-1.m b/test/SemaObjC/default-synthesize-1.m index 2a34a65a95..731aa863e1 100644 --- a/test/SemaObjC/default-synthesize-1.m +++ b/test/SemaObjC/default-synthesize-1.m @@ -127,7 +127,7 @@ // rdar://17774815 @interface ZXParsedResult -@property (nonatomic, copy, readonly) NSString *description; +@property (nonatomic, copy, readonly) NSString *description; // expected-note {{property declared here}} @end @interface ZXCalendarParsedResult : ZXParsedResult diff --git a/test/SemaObjC/default-synthesize-3.m b/test/SemaObjC/default-synthesize-3.m index 879335e26b..dce9edabb9 100644 --- a/test/SemaObjC/default-synthesize-3.m +++ b/test/SemaObjC/default-synthesize-3.m @@ -44,7 +44,7 @@ __attribute ((objc_requires_property_definitions)) // expected-error {{'objc_req @interface NSObject @end @protocol Foo @property (readonly) char isFoo; // expected-note {{property declared here}} -@property (readonly) char isNotFree; +@property (readonly) char isNotFree; // expected-note {{property declared here}} @end @interface Bar : NSObject @@ -90,9 +90,9 @@ __attribute ((objc_requires_property_definitions)) // expected-error {{'objc_req @end @interface B -@property (readonly) id prop; -@property (readonly) id prop1; -@property (readonly) id prop2; +@property (readonly) id prop; // expected-note {{property declared here}} +@property (readonly) id prop1; // expected-note {{property declared here}} +@property (readonly) id prop2; // expected-note {{property declared here}} @end @interface B() diff --git a/test/SemaObjC/protocols-suppress-conformance.m b/test/SemaObjC/protocols-suppress-conformance.m index 8415154ab1..a6604b7ff9 100644 --- a/test/SemaObjC/protocols-suppress-conformance.m +++ b/test/SemaObjC/protocols-suppress-conformance.m @@ -13,7 +13,7 @@ __attribute__((objc_protocol_requires_explicit_implementation)) // be adopted later by a subclass. @interface ClassA - (void) theBestOfTimes; -@property (readonly) id theWorstOfTimes; +@property (readonly) id theWorstOfTimes; // expected-note {{property declared here}} @end // This class subclasses ClassA (which also adopts 'Protocol'). diff --git a/test/SemaObjC/super-property-notation.m b/test/SemaObjC/super-property-notation.m index 62ff93cb2b..2b13a5c0f8 100644 --- a/test/SemaObjC/super-property-notation.m +++ b/test/SemaObjC/super-property-notation.m @@ -30,7 +30,7 @@ void f0() { // rdar://13349296 __attribute__((objc_root_class)) @interface ClassBase -@property (nonatomic, retain) ClassBase * foo; +@property (nonatomic, retain) ClassBase * foo; // expected-note {{property declared here}} @end @implementation ClassBase