objc: note location of the previously declared
property in the diagnostic.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141745 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp
index df95396..063b4ab 100644
--- a/lib/Sema/SemaObjCProperty.cpp
+++ b/lib/Sema/SemaObjCProperty.cpp
@@ -936,9 +936,11 @@
     QualType ConvertedType;
     if (!isObjCPointerConversion(RHSType, LHSType, 
                                  ConvertedType, IncompatibleObjC) ||
-        IncompatibleObjC)
+        IncompatibleObjC) {
         Diag(Property->getLocation(), diag::warn_property_types_are_incompatible)
         << Property->getType() << SuperProperty->getType() << inheritedName;
+      Diag(SuperProperty->getLocation(), diag::note_property_declare);
+    }
   }
 }
 
diff --git a/test/SemaObjC/property-category-3.m b/test/SemaObjC/property-category-3.m
index 237de0f..2a61d92 100644
--- a/test/SemaObjC/property-category-3.m
+++ b/test/SemaObjC/property-category-3.m
@@ -1,7 +1,7 @@
 // RUN: %clang_cc1 -fsyntax-only -verify %s
 
 @protocol P
-  @property(readonly) int X;
+  @property(readonly) int X; // expected-note {{property declared here}}
 @end
 
 @protocol P1<P>
diff --git a/test/SemaObjC/property-inherited.m b/test/SemaObjC/property-inherited.m
index 11ef2be..f5f1b42 100644
--- a/test/SemaObjC/property-inherited.m
+++ b/test/SemaObjC/property-inherited.m
@@ -21,7 +21,7 @@
   id _delegate;
 }
 @property(nonatomic, assign) id<FooDelegate> delegate;
-@property(nonatomic, assign) id<BarDelegate> delegate2;
+@property(nonatomic, assign) id<BarDelegate> delegate2; // expected-note {{property declared here}}
 @end
 @interface Bar : Foo {
 }
@@ -36,7 +36,7 @@
 @interface Base : NSData 
 @property(assign) id ref;
 @property(assign) Base *p_base;
-@property(assign) NSMutableData *p_data;	
+@property(assign) NSMutableData *p_data;	 // expected-note {{property declared here}}
 @end
 
 @interface Data : Base