diff --git a/clang/lib/Sema/SemaObjCProperty.cpp b/clang/lib/Sema/SemaObjCProperty.cpp index cf9010f7fe0b..48aa18cd3070 100644 --- a/clang/lib/Sema/SemaObjCProperty.cpp +++ b/clang/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/clang/test/SemaObjC/attr-deprecated.m b/clang/test/SemaObjC/attr-deprecated.m index 3e9157d0961f..4eb56ee7d746 100644 --- a/clang/test/SemaObjC/attr-deprecated.m +++ b/clang/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/clang/test/SemaObjC/default-synthesize-1.m b/clang/test/SemaObjC/default-synthesize-1.m index 2a34a65a957e..731aa863e103 100644 --- a/clang/test/SemaObjC/default-synthesize-1.m +++ b/clang/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/clang/test/SemaObjC/default-synthesize-3.m b/clang/test/SemaObjC/default-synthesize-3.m index 879335e26beb..dce9edabb90d 100644 --- a/clang/test/SemaObjC/default-synthesize-3.m +++ b/clang/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/clang/test/SemaObjC/protocols-suppress-conformance.m b/clang/test/SemaObjC/protocols-suppress-conformance.m index 8415154ab1d8..a6604b7ff958 100644 --- a/clang/test/SemaObjC/protocols-suppress-conformance.m +++ b/clang/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/clang/test/SemaObjC/super-property-notation.m b/clang/test/SemaObjC/super-property-notation.m index 62ff93cb2b05..2b13a5c0f87c 100644 --- a/clang/test/SemaObjC/super-property-notation.m +++ b/clang/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