c++: ->template and implicit typedef [PR104608]
commit4602a494e94835f693a9230adb69ce92249ebf15
authorMarek Polacek <polacek@redhat.com>
Tue, 22 Feb 2022 20:03:34 +0000 (22 15:03 -0500)
committerMarek Polacek <polacek@redhat.com>
Thu, 10 Mar 2022 16:23:41 +0000 (10 11:23 -0500)
tree54c5d3c41f14ff1e75bfa7acee6bfb093e728343
parent97f76b5fc4b637033229e53033b4f8b6dc23472c
c++: ->template and implicit typedef [PR104608]

Here we have a forward declaration of Parameter for which we create
an implicit typedef, which is a TYPE_DECL.  Then, when looking it up
at template definition time, cp_parser_template_id gets (since r12-6754)
this TYPE_DECL which it can't handle.

This patch defers lookup for TYPE_DECLs that cp_parser_template_id can't
handle, a la r12-6879.

PR c++/104608

gcc/cp/ChangeLog:

* parser.cc (cp_parser_template_name): Repeat lookup of
TYPE_DECLs.

gcc/testsuite/ChangeLog:

* g++.dg/parse/template-keyword3.C: New test.
* g++.dg/parse/template-keyword4.C: New test.
gcc/cp/parser.cc
gcc/testsuite/g++.dg/parse/template-keyword3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/parse/template-keyword4.C [new file with mode: 0644]