[PATCH] D134542: [Concepts] Recover properly from a RecoveryExpr in a concept
Yuanfang Chen via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 23 11:01:59 PDT 2022
ychen added a comment.
The patch looks good. Two high-level questions:
- Does the similar thing happen for class templates? Like a constraint expr of a partial specialization has an error. Maybe we don't assert in this case?
- I suppose the constraint error does not always affect the overload resolution results. When it does not, an alternative would be to assume the constraint is a satisfaction failure and the compilation continues. Do you see any value in this approach? Personally, I could go either way. Basically a trade-off between pessimistic and optimistic.
================
Comment at: clang/docs/ReleaseNotes.rst:213
of FAM-like arrays.
+- Clang will now diagnose an overload set where an option has a constraint that
+ refers to an expression with a previous error as nothing viable, so that it
----------------
================
Comment at: clang/include/clang/Sema/Overload.h:931
+ bool ConstraintFailureBecauseCascadingError() const;
+
----------------
How about `ConstraintExprHasError`? `Cascading` sounds like more details than useful.
================
Comment at: clang/lib/Sema/SemaOverload.cpp:10123-10127
+ if (DeductionFailure.Result != Sema::TDK_ConstraintsNotSatisfied)
+ return false;
+
+ return static_cast<CNSInfo *>(DeductionFailure.Data)
+ ->Satisfaction.ContainsErrors;
----------------
nit: might be easier to read
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D134542/new/
https://reviews.llvm.org/D134542
More information about the cfe-commits
mailing list