c++: parse trivial DMI immediately [PR96645]
authorJason Merrill <jason@redhat.com>
Wed, 30 Mar 2022 17:57:22 +0000 (13:57 -0400)
committerJason Merrill <jason@redhat.com>
Thu, 31 Mar 2022 01:41:39 +0000 (21:41 -0400)
commit0ce8154f1c72e6d701bff969a007938e2f986369
tree4e17b6464921f41bb0056a4b655ec4f029d3414d
parent150ab50f7449cf5b496bbe6e5c60cb1adb2e2d6c
c++: parse trivial DMI immediately [PR96645]

The recent change to reject __is_constructible for nested classes with DMI
is, unsurprisingly, breaking some code.  Let's allow simple cases by
immediately parsing DMI that do no name lookup; then being in complete class
scope makes no difference.

PR c++/96645

gcc/cp/ChangeLog:

* parser.cc (cp_parser_early_parsing_nsdmi): New.
(cp_parser_member_declaration): Call it.

gcc/testsuite/ChangeLog:

* g++.dg/cpp0x/nsdmi10.C: Now OK.
* g++.dg/ext/is_constructible3.C: Likewise.
* g++.dg/ext/is_constructible7.C: Likewise.
gcc/cp/parser.cc
gcc/testsuite/g++.dg/cpp0x/nsdmi10.C
gcc/testsuite/g++.dg/ext/is_constructible3.C
gcc/testsuite/g++.dg/ext/is_constructible7.C