From ebe226231425dec2e1b880d2fae680b3bc47a1ef Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Thu, 9 Jul 2015 20:08:41 -0400 Subject: [PATCH] Bug 472199 - Give correct offset to name of unnamed template parameter Change-Id: Ie668dd02827b9e9a9c5e02700937a48471facfe1 Signed-off-by: Nathan Ridge --- .../tests/IndexCPPTemplateResolutionTest.java | 19 +++++++++++++++++++ .../dom/parser/cpp/GNUCPPSourceParser.java | 1 + 2 files changed, 20 insertions(+) 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)