From a2a8a1dd8ccb458b38730d9cd3ad53f4744acfc9 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sun, 8 Sep 2013 00:47:54 -0400 Subject: [PATCH] Bug 416788 - [regression] "Member declaration not found" for member of template specialization Change-Id: I388ea1f7dc6ff2bf315958960a113e9110acd9c8 Signed-off-by: Nathan Ridge Reviewed-on: https://git.eclipse.org/r/16207 Reviewed-by: Sergey Prigogin IP-Clean: Sergey Prigogin Tested-by: Sergey Prigogin --- .../parser/tests/ast2/AST2TemplateTests.java | 20 +++++++++++++++++++ .../dom/parser/cpp/CPPNamespaceScope.java | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) 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 f71aa75949f..fd7bcba9dd2 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 @@ -8036,4 +8036,24 @@ public class AST2TemplateTests extends AST2TestBase { public void testOutOfLineMethodOfPartialSpecialization_401152() throws Exception { parseAndCheckBindings(); } + + // namespace N { + // template + // struct C; + // + // template + // struct C { + // C(); + // void waldo(); + // }; + // + // template + // C::C() {} + // + // template + // void C::waldo() {} + // } + public void testMemberOfPartialSpecialization_416788() throws Exception { + parseAndCheckBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java index 54c580a3518..1e21fcab3c5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPNamespaceScope.java @@ -160,7 +160,7 @@ public class CPPNamespaceScope extends CPPScope implements ICPPInternalNamespace IScope scope= this; IASTName[] segments= name.getNames(); try { - for (int i= segments.length - 1; --i >= 0;) { + for (int i= segments.length; --i >= 0;) { if (scope == null) return false; IName scopeName = scope.getScopeName();