Commit dec53d22 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Regression class<T extends V> resulted in class<V> as the page title

parent 08c96891
......@@ -854,13 +854,14 @@ void ClassDef::setIncludeFile(FileDef *fd,
static void searchTemplateSpecs(/*in*/ Definition *d,
/*out*/ QList<ArgumentList> &result,
/*out*/ QCString &name)
/*out*/ QCString &name,
/*in*/ SrcLangExt lang)
{
if (d->definitionType()==Definition::TypeClass)
{
if (d->getOuterScope())
{
searchTemplateSpecs(d->getOuterScope(),result,name);
searchTemplateSpecs(d->getOuterScope(),result,name,lang);
}
ClassDef *cd=(ClassDef *)d;
if (!name.isEmpty()) name+="::";
......@@ -876,7 +877,7 @@ static void searchTemplateSpecs(/*in*/ Definition *d,
result.append(cd->templateArguments());
if (!isSpecialization)
{
name+=tempArgListToString(cd->templateArguments());
name+=tempArgListToString(cd->templateArguments(),lang);
}
}
}
......@@ -887,11 +888,11 @@ static void searchTemplateSpecs(/*in*/ Definition *d,
}
static void writeTemplateSpec(OutputList &ol,Definition *d,
const QCString &type)
const QCString &type,SrcLangExt lang)
{
QList<ArgumentList> specs;
QCString name;
searchTemplateSpecs(d,specs,name);
searchTemplateSpecs(d,specs,name,lang);
if (specs.count()>0) // class has template scope specifiers
{
ol.startSubsubsection();
......@@ -962,7 +963,7 @@ void ClassDef::writeDetailedDocumentationBody(OutputList &ol)
if (getLanguage()==SrcLangExt_Cpp)
{
writeTemplateSpec(ol,this,compoundTypeString());
writeTemplateSpec(ol,this,compoundTypeString(),getLanguage());
}
// repeat brief description
......@@ -3774,7 +3775,7 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
//{
// clName = clName.left(clName.length()-2);
//}
//printf("m_impl->lang=%d clName=%s\n",m_impl->lang,clName.data());
//printf("m_impl->lang=%d clName=%s isSpecialization=%d\n",getLanguage(),clName.data(),isSpecialization);
scName+=clName;
ArgumentList *al=0;
if (templateArguments())
......@@ -3784,7 +3785,7 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
al = actualParams->at(*actualParamIndex);
if (!isSpecialization)
{
scName+=tempArgListToString(al);
scName+=tempArgListToString(al,lang);
}
(*actualParamIndex)++;
}
......@@ -3792,7 +3793,7 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
{
if (!isSpecialization)
{
scName+=tempArgListToString(templateArguments());
scName+=tempArgListToString(templateArguments(),lang);
}
}
}
......
......@@ -4405,7 +4405,7 @@ static bool findTemplateInstanceRelation(Entry *root,
//printf("\n");
bool existingClass = (templSpec ==
tempArgListToString(templateClass->templateArguments())
tempArgListToString(templateClass->templateArguments(),root->lang)
);
if (existingClass) return TRUE;
......@@ -6332,7 +6332,7 @@ static void findMember(EntryNav *rootNav,
for (;(al=alli.current());++alli)
{
warnMsg+=" template ";
warnMsg+=tempArgListToString(al);
warnMsg+=tempArgListToString(al,root->lang);
warnMsg+='\n';
}
}
......@@ -6355,7 +6355,7 @@ static void findMember(EntryNav *rootNav,
if (templAl!=0)
{
warnMsg+=" 'template ";
warnMsg+=tempArgListToString(templAl);
warnMsg+=tempArgListToString(templAl,root->lang);
warnMsg+='\n';
}
warnMsg+=" ";
......
......@@ -194,7 +194,7 @@ static bool writeDefArgumentList(OutputList &ol,ClassDef *cd,
}
else if (cd->templateArguments())
{
cName=tempArgListToString(cd->templateArguments());
cName=tempArgListToString(cd->templateArguments(),cd->getLanguage());
//printf("2. cName=%s\n",cName.data());
}
else // no template specifier
......
......@@ -2190,7 +2190,7 @@ QCString argListToString(ArgumentList *al,bool useCanonicalType,bool showDefVals
return removeRedundantWhiteSpace(result);
}
QCString tempArgListToString(ArgumentList *al)
QCString tempArgListToString(ArgumentList *al,SrcLangExt lang)
{
QCString result;
if (al==0) return result;
......@@ -2209,6 +2209,10 @@ QCString tempArgListToString(ArgumentList *al)
{
result+="in ";
}
if (lang==SrcLangExt_Java || lang==SrcLangExt_CSharp)
{
result+=a->type+" ";
}
result+=a->name;
}
else // extract name from type
......
......@@ -229,7 +229,7 @@ QCString removeRedundantWhiteSpace(const QCString &s);
QCString argListToString(ArgumentList *al,bool useCanonicalType=FALSE,bool showDefVals=TRUE);
QCString tempArgListToString(ArgumentList *al);
QCString tempArgListToString(ArgumentList *al,SrcLangExt lang);
QCString generateMarker(int id);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment