Author: compnerd Date: Sat Feb 6 20:30:59 2016 New Revision: 260017 URL: http://llvm.org/viewvc/llvm-project?rev=260017&view=rev Log: 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. Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp cfe/trunk/test/SemaObjC/typo-correction-arc.m Modified: cfe/trunk/lib/Sema/SemaExprCXX.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExprCXX.cpp?rev=260017&r1=260016&r2=260017&view=diff ============================================================================== --- cfe/trunk/lib/Sema/SemaExprCXX.cpp (original) +++ cfe/trunk/lib/Sema/SemaExprCXX.cpp Sat Feb 6 20:30:59 2016 @@ -6590,6 +6590,10 @@ public: return Owned(E); } + ExprResult TransformObjCIvarRefExpr(ObjCIvarRefExpr *E) { + return Owned(E); + } + ExprResult Transform(Expr *E) { ExprResult Res; while (true) { Modified: cfe/trunk/test/SemaObjC/typo-correction-arc.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/typo-correction-arc.m?rev=260017&r1=260016&r2=260017&view=diff ============================================================================== --- cfe/trunk/test/SemaObjC/typo-correction-arc.m (original) +++ cfe/trunk/test/SemaObjC/typo-correction-arc.m Sat Feb 6 20:30:59 2016 @@ -2,16 +2,21 @@ typedef unsigned long NSUInteger; +id nameless; // expected-note{{'nameless' declared here}} + @interface NSArray - (instancetype)initWithObjects:(const id[])objects count:(NSUInteger)count; @end @interface I @property NSArray *array; +- (id)getArrayById:(id)name; +- (void)setArrayValue:(id)array; @end @interface J - (void)setArray:(id)array; +- (void)setIvarArray; @end @implementation J { @@ -20,5 +25,8 @@ typedef unsigned long NSUInteger; - (void)setArray:(id)array { // expected-note{{'array' declared here}} 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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits