[clang] Properly parse variable template requires clause in lambda
Since P0857, part of C++20, a *lambda-expression* can contain a *requires-clause* after its *template-parameter-list*. While support for this was added as part of eccc734a, one specific case isn't handled properly, where the *requires-clause* consists of an instantiation of a boolean variable template. This is due to a diagnostic check which was written with the assumption that a *requires-clause* can never be followed by a left parenthesis. This assumption no longer holds for lambdas. This diagnostic check would then attempt to perform a "recovery", but it does so in a valid parse state, resulting in an invalid parse state instead! This patch adds a special case when parsing requires clauses of lambda templates, to skip this diagnostic check. Fixes https://github.com/llvm/llvm-project/issues/61278 Fixes https://github.com/llvm/llvm-project/issues/61387 Reviewed By: erichkeane Differential Revision: https://reviews.llvm.org/D146140
Loading
Please sign in to comment