diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java index 69752c7a296..649db4af10e 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexCPPTemplateResolutionTest.java @@ -2683,4 +2683,23 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa IVariable var2 = getBindingFromASTName("var2", 4); assertSameType(var1.getType(), var2.getType()); } + + // template + // struct allocator { + // typedef T value_type; + // }; + + // template struct allocator; + // + // struct Item { + // int waldo; + // }; + // + // int main() { + // allocator::value_type item; + // item.waldo = 5; + // } + public void testRedeclarationWithUnnamedTemplateParameter_472199() throws Exception { + checkBindings(); + } } 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 83e06a7c516..ec1c08b61b3 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 @@ -2364,6 +2364,7 @@ public class GNUCPPSourceParser extends AbstractGNUSourceCodeParser { endOffset = calculateEndOffset(identifierName); } else { identifierName = nodeFactory.newName(); + setRange(identifierName, endOffset, endOffset); } if (LT(1) == IToken.tASSIGN) { // optional = type-id if (parameterPack)