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 d120fe295c8..52c92bd0d77 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 @@ -645,4 +645,18 @@ public class IndexCPPTemplateResolutionTest extends IndexBindingResolutionTestBa IBinding b5 = getBindingFromASTName("left(a,b)", 4); IBinding b6 = getBindingFromASTName("left(a,b)", 4); } + + // class A {}; + // template class D {}; + // template class D {}; + + // D daa; + public void testClassPartialSpecializations_199572() throws Exception { + IBinding b0= getBindingFromASTName("D", 6); + assertInstance(b0, ICPPTemplateInstance.class); + assertInstance(b0, ICPPClassType.class); + IBinding b1= getBindingFromASTName("D", 1); + assertInstance(b1, ICPPTemplateDefinition.class); + assertInstance(b1, ICPPClassType.class); + } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplatePartialSpecialization.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplatePartialSpecialization.java index b03eb219a05..1d080110311 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplatePartialSpecialization.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/composite/cpp/CompositeCPPClassTemplatePartialSpecialization.java @@ -33,8 +33,9 @@ public class CompositeCPPClassTemplatePartialSpecialization extends CompositeCPP return (ICPPClassTemplate) cf.getCompositeBinding((IIndexFragmentBinding)preresult); } - public IType[] getArguments() { return TemplateInstanceUtil.getArguments(cf, (ICPPClassTemplatePartialSpecialization) rbinding); } + public IType[] getArguments() { return TemplateInstanceUtil.getArguments(cf, (ICPPClassTemplatePartialSpecialization) rbinding); } public ObjectMap getArgumentMap() { return TemplateInstanceUtil.getArgumentMap(cf, rbinding); } public IBinding getSpecializedBinding() { return TemplateInstanceUtil.getSpecializedBinding(cf, rbinding); } public int getSignatureMemento() throws CoreException { return ((IPDOMOverloader) rbinding).getSignatureMemento(); } + public IBinding instantiate(IType[] args) { return InternalTemplateInstantiatorUtil.instantiate(args, cf, rbinding); } }