mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-23 22:52:11 +02:00
Fix for 192182, ClassCastException in template instanciation.
This commit is contained in:
parent
e9132a0cf8
commit
ff7406087e
3 changed files with 21 additions and 11 deletions
|
@ -8,6 +8,7 @@
|
|||
* Contributors:
|
||||
* IBM - Initial API and implementation
|
||||
* Bryan Wilkinson (QNX)
|
||||
* Markus Schorn (Wind River Systems)
|
||||
*******************************************************************************/
|
||||
/*
|
||||
* Created on Mar 31, 2005
|
||||
|
@ -72,19 +73,25 @@ public class CPPClassTemplate extends CPPTemplateDefinition implements
|
|||
return ((ICPPClassTemplate)getBinding()).getTemplateParameters();
|
||||
}
|
||||
public void addSpecialization( IType[] arguments, ICPPSpecialization specialization ) {
|
||||
((ICPPInternalTemplate)getBinding()).addSpecialization( arguments, specialization );
|
||||
final IBinding binding = getBinding();
|
||||
if (binding instanceof ICPPInternalBinding) {
|
||||
((ICPPInternalTemplate)binding).addSpecialization( arguments, specialization );
|
||||
}
|
||||
}
|
||||
public IBinding instantiate( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).instantiate( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).instantiate( arguments );
|
||||
}
|
||||
public ICPPSpecialization deferredInstance( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).deferredInstance( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).deferredInstance( arguments );
|
||||
}
|
||||
public ICPPSpecialization getInstance( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).getInstance( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).getInstance( arguments );
|
||||
}
|
||||
public void addPartialSpecialization( ICPPClassTemplatePartialSpecialization spec ) {
|
||||
((ICPPInternalClassTemplate)getBinding()).addPartialSpecialization( spec );
|
||||
final IBinding binding = getBinding();
|
||||
if (binding instanceof ICPPInternalClassTemplate) {
|
||||
((ICPPInternalClassTemplate)getBinding()).addPartialSpecialization( spec );
|
||||
}
|
||||
}
|
||||
}
|
||||
private ICPPClassTemplatePartialSpecialization [] partialSpecializations = null;
|
||||
|
|
|
@ -100,16 +100,19 @@ public class CPPFunctionTemplate extends CPPTemplateDefinition implements ICPPFu
|
|||
return ((ICPPFunctionTemplate)getBinding()).getTemplateParameters();
|
||||
}
|
||||
public void addSpecialization( IType[] arguments, ICPPSpecialization specialization ) {
|
||||
((ICPPInternalTemplate)getBinding()).addSpecialization( arguments, specialization );
|
||||
final IBinding binding = getBinding();
|
||||
if (binding instanceof ICPPInternalBinding) {
|
||||
((ICPPInternalTemplate)getBinding()).addSpecialization( arguments, specialization );
|
||||
}
|
||||
}
|
||||
public IBinding instantiate( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).instantiate( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).instantiate( arguments );
|
||||
}
|
||||
public ICPPSpecialization deferredInstance( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).deferredInstance( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).deferredInstance( arguments );
|
||||
}
|
||||
public ICPPSpecialization getInstance( IType[] arguments ) {
|
||||
return ((ICPPInternalTemplate)getBinding()).getInstance( arguments );
|
||||
return ((ICPPInternalTemplateInstantiator)getBinding()).getInstance( arguments );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1542,8 +1542,8 @@ public class CPPTemplates {
|
|||
}
|
||||
}
|
||||
|
||||
if( template instanceof ICPPInternalTemplate ){
|
||||
return ((ICPPInternalTemplate)template).instantiate( args );
|
||||
if( template instanceof ICPPInternalTemplateInstantiator ){
|
||||
return ((ICPPInternalTemplateInstantiator)template).instantiate( args );
|
||||
}
|
||||
return template;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue