Skip to content

Commit

Permalink
Regression class<T extends V> resulted in class<V> as the page title
Browse files Browse the repository at this point in the history
  • Loading branch information
Dimitri van Heesch committed Sep 14, 2014
1 parent 08c9689 commit dec53d2
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 15 deletions.
19 changes: 10 additions & 9 deletions src/classdef.cpp
Expand Up @@ -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+="::";
Expand All @@ -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);
}
}
}
Expand All @@ -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();
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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())
Expand All @@ -3784,15 +3785,15 @@ QCString ClassDef::qualifiedNameWithTemplateParameters(
al = actualParams->at(*actualParamIndex);
if (!isSpecialization)
{
scName+=tempArgListToString(al);
scName+=tempArgListToString(al,lang);
}
(*actualParamIndex)++;
}
else
{
if (!isSpecialization)
{
scName+=tempArgListToString(templateArguments());
scName+=tempArgListToString(templateArguments(),lang);
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/doxygen.cpp
Expand Up @@ -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;

Expand Down Expand Up @@ -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';
}
}
Expand All @@ -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+=" ";
Expand Down
2 changes: 1 addition & 1 deletion src/memberdef.cpp
Expand Up @@ -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
Expand Down
6 changes: 5 additions & 1 deletion src/util.cpp
Expand Up @@ -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;
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion src/util.h
Expand Up @@ -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);

Expand Down

0 comments on commit dec53d2

Please sign in to comment.