summaryrefslogtreecommitdiffstats
path: root/src/scanner.l
diff options
context:
space:
mode:
authoralbert-github <albert.tests@gmail.com>2018-10-20 10:21:16 (GMT)
committeralbert-github <albert.tests@gmail.com>2018-10-20 10:21:16 (GMT)
commit5f9be083471dad47a9b3ad59d85bf04d3a855001 (patch)
treeb1123a881edf90b8ca42068432c9c3f59cfe398f /src/scanner.l
parent2f50bc0bcc39cfb27537109b779d18d7389f81f1 (diff)
downloadDoxygen-5f9be083471dad47a9b3ad59d85bf04d3a855001.zip
Doxygen-5f9be083471dad47a9b3ad59d85bf04d3a855001.tar.gz
Doxygen-5f9be083471dad47a9b3ad59d85bf04d3a855001.tar.bz2
Bug 749049 - Doxygen not creating call graphs for C# methods if namespace contains the classname
Problem is the '.' in the namespace name. For Csharp: namespace N1.n2 { is equivalent to namespace N1 { namespace N2 { This splitting has to be considered in the scanner so the different namespaces are mentioned. In the code.l the '.' was not handled.
Diffstat (limited to 'src/scanner.l')
-rw-r--r--src/scanner.l22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/scanner.l b/src/scanner.l
index 4846132..08bcee1 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -3840,6 +3840,28 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP})
else
{
current->endBodyLine = yyLineNr;
+ if (current->section == Entry::NAMESPACE_SEC && current->type == "namespace")
+ {
+ int split_point;
+ while ((split_point = current->name.find("::")) != -1)
+ {
+ Entry *new_current = new Entry(*current);
+ current->program = "";
+ new_current->doc = "";
+ new_current->docLine = 0;
+ new_current->docFile = "";
+ new_current->brief = "";
+ new_current->briefLine = 0;
+ new_current->briefFile = "";
+ new_current->name = current->name.mid(split_point + 2);
+ current->name = current->name.left(split_point);
+ if (!current_root->name.isEmpty()) current->name.prepend(current_root->name+"::");
+
+ current_root->addSubEntry(current);
+ current_root = current;
+ current = new_current;
+ }
+ }
QCString &cn = current->name;
QCString rn = current_root->name.copy();
//printf("cn=`%s' rn=`%s' isTypedef=%d\n",cn.data(),rn.data(),isTypedef);