Fix a failed assertion on an invalid typename requirement
authorAaron Ballman <aaron@aaronballman.com>
Tue, 18 Jan 2022 16:57:59 +0000 (11:57 -0500)
committerAaron Ballman <aaron@aaronballman.com>
Tue, 18 Jan 2022 16:59:08 +0000 (11:59 -0500)
commitfa596fb0779ae9029edbcff80ff95e9d1a816206
tree833187f72a3f546cb99c5caa626c629084d38313
parent5c36ee8d57fa702d8dc4ee9349978bff575a9465
Fix a failed assertion on an invalid typename requirement

The parsing code for a typename requirement currently asserts when
given something which is not a valid type-requirement
(http://eel.is/c++draft/expr.prim.req.type#nt:type-requirement). This
removes the assertion to continue on to the proper diagnostic.

This resolves PR53057.

Note that in that PR, it is using _BitInt(N) as a dependent type name.
This patch does not attempt to support that as it is not clear that is
a valid type requirement (it does not match the grammar production for
one). The workaround in the PR, however, is definitely valid and works
as expected.
clang/lib/Parse/ParseExprCXX.cpp
clang/test/Parser/cxx2a-concepts-requires-expr.cpp