vsapsai added a comment.

In D60848#1472799 <https://reviews.llvm.org/D60848#1472799>, @erik.pilkington 
wrote:

> Wait, why is NumTypos incorrect here? I think its because we don't handle the 
> typo on the line: `[self undeclaredMethod:undeclaredArg];`, even the 
> following asserts now. Seems like the right fix would be to track down why we 
> aren't handling the typo in the message expr.
>
>   // RUN: clang -cc1 %s -fobjc-arc
>   @implementation X
>   -x { [self undeclaredMethod:undeclaredArg]; }
>   @end
>


The reason why we aren't handling the typo in this case is because TypoExpr is 
created for `undeclaredArg` and when we emit `err_arc_may_not_respond` 
<https://github.com/llvm/llvm-project/blob/36371d61ec8ddd13ad922845de6f4c6b95cd21f2/clang/lib/Sema/SemaExprObjC.cpp#L2931-L2934>
 we just return `ExprError` and drop `MultiExprArg` without checking if it 
contains TypoExpr or not. It is possible to fix this case but we have many 
more. Some of them are

  @class Test;
  void test(void) {
    Test *obj;
    [obj test:undeclaredArg];
  }



  struct S {
    int x;
  } S;
  void test(void) {
    [S test:undeclaredArg];
  }

I think that with the current design for delayed typos it's not feasible to fix 
all of these lingering delayed typos. Given that with disabled assertions  
non-empty `DelayedTypos` in `~Sema` isn't causing crashes, I've decided to 
improve handling the subscripts.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60848/new/

https://reviews.llvm.org/D60848



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to