[pushed] c++: parsing injected-class-name as template

Message ID 20220515164326.3971647-1-jason@redhat.com
State Committed
Commit 87e1f023aae945aedd7ea046e06b4f52318913f7
Headers
Series [pushed] c++: parsing injected-class-name as template |

Commit Message

Jason Merrill May 15, 2022, 4:43 p.m. UTC
  While I was backporting the patch for PR102300, it occurred to me that it
would be cleaner to look through the injected-class-name earlier in the
function.  I don't think this changes any test results.

Tested x86_64-pc-linux-gnu, applying to trunk.

gcc/cp/ChangeLog:

	* parser.cc (cp_parser_template_name): Look through
	injected-class-name.
---
 gcc/cp/parser.cc | 3 +++
 1 file changed, 3 insertions(+)


base-commit: ce46d6041358052dfa26f3720732f0357c5d72e7
  

Patch

diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
index 8969ed0076a..d4dab6cf84e 100644
--- a/gcc/cp/parser.cc
+++ b/gcc/cp/parser.cc
@@ -18646,6 +18646,9 @@  cp_parser_template_name (cp_parser* parser,
     (9.3.4), or in a type-only context other than a nested-name-specifier
     (13.8).  */
 
+  /* Handle injected-class-name.  */
+  decl = maybe_get_template_decl_from_type_decl (decl);
+
   /* If DECL is a template, then the name was a template-name.  */
   if (TREE_CODE (decl) == TEMPLATE_DECL)
     {