aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2010-10-14 21:30:10 +0000
committerFariborz Jahanian <fjahanian@apple.com>2010-10-14 21:30:10 +0000
commitfa432391a708448518df1e6ced4e34f4c349d169 (patch)
treef1fc9aa9ea41106caf991387d38121c2444172ce
parented7c308fac03da7168e167de15d231af8aed02a6 (diff)
Put line number on the diagnostic. //rdar: //8550657.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116519 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Sema/SemaObjCProperty.cpp2
-rw-r--r--test/SemaObjCXX/property-synthesis-error.mm32
2 files changed, 33 insertions, 1 deletions
diff --git a/lib/Sema/SemaObjCProperty.cpp b/lib/Sema/SemaObjCProperty.cpp
index fbb87b9bf4..f7555cfa6a 100644
--- a/lib/Sema/SemaObjCProperty.cpp
+++ b/lib/Sema/SemaObjCProperty.cpp
@@ -501,7 +501,7 @@ Decl *Sema::ActOnPropertyImplDecl(Scope *S,
ParmVarDecl *Param = (*P);
Expr *rhs = new (Context) DeclRefExpr(Param,Param->getType(),
SourceLocation());
- ExprResult Res = BuildBinOp(S, SourceLocation(),
+ ExprResult Res = BuildBinOp(S, lhs->getLocEnd(),
BO_Assign, lhs, rhs);
PIDecl->setSetterCXXAssignment(Res.takeAs<Expr>());
}
diff --git a/test/SemaObjCXX/property-synthesis-error.mm b/test/SemaObjCXX/property-synthesis-error.mm
new file mode 100644
index 0000000000..59e17b2a8d
--- /dev/null
+++ b/test/SemaObjCXX/property-synthesis-error.mm
@@ -0,0 +1,32 @@
+// RUN: %clang_cc1 -fsyntax-only -verify %s
+// rdar: //8550657
+
+@interface NSArray @end
+
+@interface NSMutableArray : NSArray @end
+
+@interface MyClass
+{
+ NSMutableArray * _array;
+}
+
+@property (readonly) NSArray * array;
+
+@end
+
+@interface MyClass ()
+
+@property (readwrite) NSMutableArray * array;
+
+@end
+
+@implementation MyClass
+
+@synthesize array=_array; // expected-error {{assigning to 'NSMutableArray *' from incompatible type 'NSArray *'}}
+
+@end
+
+int main(void)
+{
+ return 0;
+}