mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
Partial fix for bug#57526 [CModelTests]
This commit is contained in:
parent
bb06248085
commit
6502083342
2 changed files with 30 additions and 27 deletions
|
@ -148,7 +148,7 @@ public class StructuralTemplateTests extends ITemplateTests {
|
|||
//"nonVector"
|
||||
{"T"},
|
||||
//"ArrayOverlay"
|
||||
{"X","Y","size"}, // should be {"X","Y","int=16"},
|
||||
{"X","Y","int=16"},
|
||||
//"TemplateContainer::fum"
|
||||
{"Bar"},
|
||||
//"TemplateParameter::scrum"
|
||||
|
@ -194,7 +194,7 @@ public class StructuralTemplateTests extends ITemplateTests {
|
|||
String[] myExpectedValues = {
|
||||
"Map<Key, Value, SortAlgorithm>",
|
||||
"nonVector<T>",
|
||||
"ArrayOverlay<X, Y, size>", // should be "ArrayOverlay<X, Y, int=16>",
|
||||
"ArrayOverlay<X, Y, int=16>",
|
||||
"fum<Bar>(int) : void",
|
||||
"scrum<Foo>(void) : void", // TODO: deduce the rules of () versus (void), compare below.
|
||||
// TODO: shouldn't signature indicate const function as well?
|
||||
|
|
|
@ -42,36 +42,39 @@ public class ASTUtil {
|
|||
while (templateParams.hasNext()){
|
||||
StringBuffer paramType = new StringBuffer();
|
||||
IASTTemplateParameter parameter = (IASTTemplateParameter)templateParams.next();
|
||||
if((parameter.getIdentifier() != null) && (parameter.getIdentifier().length() != 0))
|
||||
{
|
||||
paramList.add(parameter.getIdentifier().toString());
|
||||
}
|
||||
else
|
||||
{
|
||||
IASTTemplateParameter.ParamKind kind = parameter.getTemplateParameterKind();
|
||||
if(kind == IASTTemplateParameter.ParamKind.CLASS){
|
||||
IASTTemplateParameter.ParamKind kind = parameter.getTemplateParameterKind();
|
||||
if(kind == IASTTemplateParameter.ParamKind.CLASS){
|
||||
if((parameter.getIdentifier() != null) && (parameter.getIdentifier().length() != 0))
|
||||
{
|
||||
paramType.append(parameter.getIdentifier().toString());
|
||||
}else {
|
||||
paramType.append("class"); //$NON-NLS-1$
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.TYPENAME){
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.TYPENAME){
|
||||
if((parameter.getIdentifier() != null) && (parameter.getIdentifier().length() != 0))
|
||||
{
|
||||
paramType.append(parameter.getIdentifier().toString());
|
||||
}else {
|
||||
paramType.append("typename"); //$NON-NLS-1$
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.TEMPLATE_LIST){
|
||||
paramType.append("template<"); //$NON-NLS-1$
|
||||
String[] subParams = getTemplateParameters(parameter.getTemplateParameters());
|
||||
int p = 0;
|
||||
if ( subParams.length > 0)
|
||||
paramType.append(subParams[p++]);
|
||||
while( p < subParams.length){
|
||||
paramType.append(", "); //$NON-NLS-1$
|
||||
paramType.append(subParams[p++]);
|
||||
}
|
||||
paramType.append(">"); //$NON-NLS-1$
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.TEMPLATE_LIST){
|
||||
paramType.append("template<"); //$NON-NLS-1$
|
||||
String[] subParams = getTemplateParameters(parameter.getTemplateParameters());
|
||||
int p = 0;
|
||||
if ( subParams.length > 0)
|
||||
paramType.append(subParams[p++]);
|
||||
while( p < subParams.length){
|
||||
paramType.append(", "); //$NON-NLS-1$
|
||||
paramType.append(subParams[p++]);
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.PARAMETER){
|
||||
paramType.append(getType(parameter.getParameterDeclaration()));
|
||||
}
|
||||
paramList.add(paramType.toString());
|
||||
} // end else
|
||||
paramType.append(">"); //$NON-NLS-1$
|
||||
}
|
||||
if(kind == IASTTemplateParameter.ParamKind.PARAMETER){
|
||||
paramType.append(getType(parameter.getParameterDeclaration()));
|
||||
}
|
||||
paramList.add(paramType.toString());
|
||||
}// end while
|
||||
String[] parameterTypes = new String[paramList.size()];
|
||||
for(int j=0; j<paramList.size(); ++j){
|
||||
|
|
Loading…
Add table
Reference in a new issue