[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