mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-30 04:15:35 +02:00
180948: fix ClassCastException
This commit is contained in:
parent
95058d83f4
commit
3139aa5792
2 changed files with 12 additions and 7 deletions
|
@ -155,7 +155,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
result = null;
|
result = null;
|
||||||
} else if (binding instanceof ICPPTemplateDefinition) {
|
} else if (binding instanceof ICPPTemplateDefinition) {
|
||||||
if(binding instanceof ICPPClassTemplate) {
|
if(binding instanceof ICPPClassTemplate) {
|
||||||
return new CompositeCPPClassTemplate(this, (ICPPClassType) binding);
|
return new CompositeCPPClassTemplate(this, (ICPPClassType) findOneDefinition(binding));
|
||||||
} else if (binding instanceof ICPPFunctionTemplate) {
|
} else if (binding instanceof ICPPFunctionTemplate) {
|
||||||
return new CompositeCPPFunctionTemplate(this, (ICPPFunction) binding);
|
return new CompositeCPPFunctionTemplate(this, (ICPPFunction) binding);
|
||||||
} else {
|
} else {
|
||||||
|
@ -165,7 +165,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
if(binding instanceof ICPPTemplateInstance) {
|
if(binding instanceof ICPPTemplateInstance) {
|
||||||
if(binding instanceof ICPPDeferredTemplateInstance) {
|
if(binding instanceof ICPPDeferredTemplateInstance) {
|
||||||
if(binding instanceof ICPPClassType) {
|
if(binding instanceof ICPPClassType) {
|
||||||
return new CompositeCPPDeferredClassInstance(this, (ICPPClassType) binding);
|
return new CompositeCPPDeferredClassInstance(this, (ICPPClassType) findOneDefinition(binding));
|
||||||
} else if(binding instanceof ICPPFunction) {
|
} else if(binding instanceof ICPPFunction) {
|
||||||
return new CompositeCPPDeferredFunctionInstance(this, (ICPPFunction) binding);
|
return new CompositeCPPDeferredFunctionInstance(this, (ICPPFunction) binding);
|
||||||
} else {
|
} else {
|
||||||
|
@ -173,7 +173,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if(binding instanceof ICPPClassType) {
|
if(binding instanceof ICPPClassType) {
|
||||||
return new CompositeCPPClassInstance(this, (ICPPClassType) binding);
|
return new CompositeCPPClassInstance(this, (ICPPClassType) findOneDefinition(binding));
|
||||||
} if(binding instanceof ICPPFunction) {
|
} if(binding instanceof ICPPFunction) {
|
||||||
return new CompositeCPPFunctionInstance(this, (ICPPFunction) binding);
|
return new CompositeCPPFunctionInstance(this, (ICPPFunction) binding);
|
||||||
} else {
|
} else {
|
||||||
|
@ -185,7 +185,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
if(binding instanceof ICPPClassTemplatePartialSpecialization) {
|
if(binding instanceof ICPPClassTemplatePartialSpecialization) {
|
||||||
return new CompositeCPPClassTemplatePartialSpecialization(this, (ICPPClassTemplatePartialSpecialization) binding);
|
return new CompositeCPPClassTemplatePartialSpecialization(this, (ICPPClassTemplatePartialSpecialization) binding);
|
||||||
} else {
|
} else {
|
||||||
return new CompositeCPPClassSpecialization(this, (ICPPClassType) binding);
|
return new CompositeCPPClassSpecialization(this, (ICPPClassType) findOneDefinition(binding));
|
||||||
}
|
}
|
||||||
} if(binding instanceof ICPPConstructor) {
|
} if(binding instanceof ICPPConstructor) {
|
||||||
return new CompositeCPPConstructorSpecialization(this, (ICPPConstructor) binding);
|
return new CompositeCPPConstructorSpecialization(this, (ICPPConstructor) binding);
|
||||||
|
@ -196,7 +196,7 @@ public class CPPCompositesFactory extends AbstractCompositeFactory implements IC
|
||||||
} if(binding instanceof ICPPField) {
|
} if(binding instanceof ICPPField) {
|
||||||
return new CompositeCPPField(this, (ICPPField) binding);
|
return new CompositeCPPField(this, (ICPPField) binding);
|
||||||
} if(binding instanceof ICPPParameter) {
|
} if(binding instanceof ICPPParameter) {
|
||||||
return new CompositeCPPParameter(this, (ICPPParameter) binding);
|
return new CompositeCPPParameterSpecialization(this, (ICPPParameter) binding);
|
||||||
} else {
|
} else {
|
||||||
throw new CompositingNotImplementedError("composite binding unavailable for "+binding+" "+binding.getClass()); //$NON-NLS-1$ //$NON-NLS-2$
|
throw new CompositingNotImplementedError("composite binding unavailable for "+binding+" "+binding.getClass()); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,14 @@ public class TemplateInstanceUtil {
|
||||||
Object[] keys= preresult.keyArray();
|
Object[] keys= preresult.keyArray();
|
||||||
for(int i=0; i<keys.length; i++) {
|
for(int i=0; i<keys.length; i++) {
|
||||||
IType type= (IType) preresult.get(keys[i]);
|
IType type= (IType) preresult.get(keys[i]);
|
||||||
result.put(
|
try {
|
||||||
|
result.put(
|
||||||
cf.getCompositeBinding((IIndexFragmentBinding)keys[i]),
|
cf.getCompositeBinding((IIndexFragmentBinding)keys[i]),
|
||||||
cf.getCompositeBinding((IIndexFragmentBinding)type));
|
cf.getCompositeType((IIndexType)type));
|
||||||
|
} catch(DOMException de) {
|
||||||
|
result.put(keys[i], type);
|
||||||
|
CCorePlugin.log(de);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue