forked from OSchip/llvm-project
Sema: handle typo correction on ARC'ed ivar
The ivar ref would be transformed by the Typo Correction TreeTransform, but not be owned, resulting in the source location being invalid. This would eventually lead to an assertion in findCapturingExpr. Prevent this assertion from triggering. Resolves PR25113. llvm-svn: 260017
This commit is contained in:
parent
407f36bde9
commit
02e19a1696
|
@ -6590,6 +6590,10 @@ public:
|
||||||
return Owned(E);
|
return Owned(E);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExprResult TransformObjCIvarRefExpr(ObjCIvarRefExpr *E) {
|
||||||
|
return Owned(E);
|
||||||
|
}
|
||||||
|
|
||||||
ExprResult Transform(Expr *E) {
|
ExprResult Transform(Expr *E) {
|
||||||
ExprResult Res;
|
ExprResult Res;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
|
@ -2,16 +2,21 @@
|
||||||
|
|
||||||
typedef unsigned long NSUInteger;
|
typedef unsigned long NSUInteger;
|
||||||
|
|
||||||
|
id nameless; // expected-note{{'nameless' declared here}}
|
||||||
|
|
||||||
@interface NSArray
|
@interface NSArray
|
||||||
- (instancetype)initWithObjects:(const id[])objects count:(NSUInteger)count;
|
- (instancetype)initWithObjects:(const id[])objects count:(NSUInteger)count;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface I
|
@interface I
|
||||||
@property NSArray *array;
|
@property NSArray *array;
|
||||||
|
- (id)getArrayById:(id)name;
|
||||||
|
- (void)setArrayValue:(id)array;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface J
|
@interface J
|
||||||
- (void)setArray:(id)array;
|
- (void)setArray:(id)array;
|
||||||
|
- (void)setIvarArray;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation J {
|
@implementation J {
|
||||||
|
@ -20,5 +25,8 @@ typedef unsigned long NSUInteger;
|
||||||
- (void)setArray:(id)array { // expected-note{{'array' declared here}}
|
- (void)setArray:(id)array { // expected-note{{'array' declared here}}
|
||||||
i.array = aray; // expected-error{{use of undeclared identifier 'aray'; did you mean 'array'}}
|
i.array = aray; // expected-error{{use of undeclared identifier 'aray'; did you mean 'array'}}
|
||||||
}
|
}
|
||||||
|
- (void)setIvarArray {
|
||||||
|
[i setArrayValue:[i getArrayById:nameles]]; // expected-error{{use of undeclared identifier 'nameles'; did you mean 'nameless'}}
|
||||||
|
}
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue