forked from OSchip/llvm-project
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:
parent
905a646c24
commit
407f36bde9
|
@ -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) {
|
||||
|
|
|
@ -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
|
||||
|
Loading…
Reference in New Issue