[clang] [Clang] Improve error recovery for invalid calls (PR #136295)

Younan Zhang via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 18 18:12:01 PDT 2025


================
@@ -34,21 +34,22 @@ void test_invalid_call_1(int s) {
 
 int some_func2(int a, int b);
 void test_invalid_call_2() {
-  // CHECK:   -RecoveryExpr {{.*}} 'int' contains-errors
+  // CHECK:   -RecoveryExpr {{.*}} '<dependent type>' contains-errors
----------------
zyn0217 wrote:

We used to call ActOnExpr for this case, which ended up creating a non-dependent RecoveryExpr with its type heuristically computed over the overload candidate set, in `FinishOverloadedCallExpr`.

We could do the same again by calling `ActOnCallExpr` anyway, but that would lead to a lot more diagnostic regressions when recovering from an already-diagnosed function-call-like expression.

Or do you prefer assigning Context.IntTy for these RecoveryExpr expressions, regardless?

https://github.com/llvm/llvm-project/pull/136295


More information about the cfe-commits mailing list