[PATCH] D126907: Deferred Concept Instantiation Implementation Take 2
Erich Keane via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 15 06:35:25 PDT 2022
erichkeane added a comment.
In D126907#3584555 <https://reviews.llvm.org/D126907#3584555>, @ChuanqiXu wrote:
> I finally found some time to look at the crash. Although I haven't get an idea, I found it crash at the following one too:
>
> template <typename T>
> concept Constraint = true;
>
> template <typename... Signatures>
> class completion_handler_async_result {
> public:
> template <typename Initiation, Constraint RawCompletionToken>
> static void initiate(Initiation&& initiation, RawCompletionToken&& token);
> };
>
> template <typename... Signatures>
> concept Constraint2 =
> requires() {
> completion_handler_async_result<Signatures...>::initiate(0, 0);
> };
>
> template <typename T>
> void use(int F)
> requires Constraint2<int>
> {}
>
> The crash log is:
>
> clang/lib/AST/ExprConstant.cpp:15083: bool clang::Expr::EvaluateAsConstantExpr(clang::Expr::EvalResult&, const clang::ASTContext&, clang::Expr::ConstantExprKind) const: Assertion `!isValueDependent() && "Expression evaluator can't be called on a dependent expression."' failed.
>
> I am not sure if they are the same problem.
Yep, that is a different crash for the same reason (mismatched 'depth' of the template parameters). I saw that a few times as well, but I believe anything we do to solve the first will solve this as well. I haven't had a chance all week to get back to this, but hopefully will be able to work more on it by EOW.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D126907/new/
https://reviews.llvm.org/D126907
More information about the cfe-commits
mailing list