diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java index fc1b4bcd99f..2a88223ceff 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/AST2TemplateTests.java @@ -5434,4 +5434,9 @@ public class AST2TemplateTests extends AST2BaseTest { public void testRRefVsRef_351927() throws Exception { parseAndCheckBindings(); } + + // template class A {}; + public void testTemplateParameterWithoutName_352266() throws Exception { + parseAndCheckBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java index 2d13fb9e1e4..46bbf254f39 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/GNUCPPSourceParser.java @@ -2097,16 +2097,16 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { if (LT(1) == IToken.tIDENTIFIER) { // optional identifier identifierName = identifier(); endOffset = calculateEndOffset(identifierName); - if (LT(1) == IToken.tASSIGN) { // optional = type-id - if (parameterPack) - throw backtrack; - consume(); - defaultValue = typeId(DeclarationOptions.TYPEID); // type-id - endOffset = calculateEndOffset(defaultValue); - } } else { identifierName = nodeFactory.newName(); } + if (LT(1) == IToken.tASSIGN) { // optional = type-id + if (parameterPack) + throw backtrack; + consume(); + defaultValue = typeId(DeclarationOptions.TYPEID); // type-id + endOffset = calculateEndOffset(defaultValue); + } // Check if followed by comma switch (LT(1)) {