Sema: handle typo correction with ARC'ed objc properties

We would previously assert in findCapturingExpr when performing a typo
correction resulting in an assignment of an ObjC property with a strong lifetype
specifier due to the expression not being rooted in the file (invalid SLoc)
during the retain cycle check on the typo-corrected expression.  Handle the
expression type appropriately during the TreeTransform to ensure that we have a
source location associated with the expression.

Fixes PR26486.

llvm-svn: 260016
This commit is contained in:
Saleem Abdulrasool 2016-02-07 02:30:55 +00:00
parent 905a646c24
commit 407f36bde9
2 changed files with 28 additions and 0 deletions

View File

@ -6586,6 +6586,10 @@ public:
ExprResult TransformBlockExpr(BlockExpr *E) { return Owned(E); }
ExprResult TransformObjCPropertyRefExpr(ObjCPropertyRefExpr *E) {
return Owned(E);
}
ExprResult Transform(Expr *E) {
ExprResult Res;
while (true) {

View File

@ -0,0 +1,24 @@
// RUN: %clang_cc1 -triple i386-apple-macosx10.10 -fobjc-arc -fsyntax-only -Wno-objc-root-class %s -verify
typedef unsigned long NSUInteger;
@interface NSArray
- (instancetype)initWithObjects:(const id[])objects count:(NSUInteger)count;
@end
@interface I
@property NSArray *array;
@end
@interface J
- (void)setArray:(id)array;
@end
@implementation J {
I *i;
}
- (void)setArray:(id)array { // expected-note{{'array' declared here}}
i.array = aray; // expected-error{{use of undeclared identifier 'aray'; did you mean 'array'}}
}
@end