From e263da241e37eacd4a20f1d1c85bfd278d5b2b42 Mon Sep 17 00:00:00 2001 From: Nathan Ridge Date: Sun, 5 Mar 2017 03:49:06 -0500 Subject: [PATCH] Bug 512932 - Delegating constructor in class template partial specialization Change-Id: Id4cb38d4857af7335a4aa294a6fe149e1a4f2acd --- .../core/parser/tests/ast2/AST2TemplateTests.java | 12 ++++++++++++ .../core/dom/parser/cpp/semantics/CPPSemantics.java | 3 +-- 2 files changed, 13 insertions(+), 2 deletions(-) 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 1985379bfa0..fbd78fe3cd2 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 @@ -10193,4 +10193,16 @@ public class AST2TemplateTests extends AST2TestBase { public void testDependentSizeofInDefaultArgument_513430() throws Exception { parseAndCheckBindings(); } + + // template + // struct A; + // + // template + // struct A { + // A(int); + // A() : A(5) {} + // }; + public void testDelegatingConstructorInPartialSpecialization_512932() throws Exception { + parseAndCheckBindings(); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java index 0cba0c43894..e933baee8cf 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/semantics/CPPSemantics.java @@ -404,8 +404,7 @@ public class CPPSemantics { && !(binding instanceof ICPPTemplateParameter) && !(lookupName instanceof ICPPASTTemplateId)) { ASTNodeProperty prop = lookupName.getPropertyInParent(); - if (prop != ICPPASTConstructorChainInitializer.MEMBER_ID && - prop != ICPPASTTemplateId.TEMPLATE_NAME && !lookupName.isQualified()) { + if (prop != ICPPASTTemplateId.TEMPLATE_NAME && !lookupName.isQualified()) { // You cannot use a class template name outside of the class template scope, // mark it as a problem. IBinding user= CPPTemplates.isUsedInClassTemplateScope((ICPPClassTemplate) binding, lookupName);