summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2015-09-14 17:58:04 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2015-09-14 17:58:04 (GMT)
commit790887ea3f63c051954a4cd49f044fa4f536867d (patch)
tree974aa390483c4db04282b5c314b36c8cc61bec9d
parent9a4a4db3c10fc705008aa879806f732b29ad8577 (diff)
downloadDoxygen-790887ea3f63c051954a4cd49f044fa4f536867d.zip
Doxygen-790887ea3f63c051954a4cd49f044fa4f536867d.tar.gz
Doxygen-790887ea3f63c051954a4cd49f044fa4f536867d.tar.bz2
Bug 753500 - $file when using @name is wrong
-rw-r--r--src/commentscan.l16
-rw-r--r--src/membergroup.cpp3
-rw-r--r--src/membergroup.h9
-rw-r--r--src/memberlist.cpp2
-rwxr-xr-xsrc/util.cpp6
5 files changed, 23 insertions, 13 deletions
diff --git a/src/commentscan.l b/src/commentscan.l
index 9442ae3..3ce53df 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -374,7 +374,7 @@ class GuardedSection
void openGroup(Entry *e,const char *file,int line);
void closeGroup(Entry *e,const char *file,int line,bool foundInline=FALSE);
void initGroupInfo(Entry *e);
-static void groupAddDocs(Entry *e,const char *fileName);
+static void groupAddDocs(Entry *e);
/* -----------------------------------------------------------------
*
@@ -2996,7 +2996,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
checkFormula();
prot = protection;
- groupAddDocs(curEntry,fileName);
+ groupAddDocs(curEntry);
newEntryNeeded = needNewEntry;
@@ -3125,10 +3125,10 @@ void openGroup(Entry *e,const char *,int)
}
}
-void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
+void closeGroup(Entry *e,const char *fileName,int line,bool foundInline)
{
- //printf("==> closeGroup(name=%s,sec=%x) g_autoGroupStack=%d\n",
- // e->name.data(),e->section,g_autoGroupStack.count());
+ //printf("==> closeGroup(name=%s,sec=%x,file=%s,line=%d) g_autoGroupStack=%d\n",
+ // e->name.data(),e->section,fileName,line,g_autoGroupStack.count());
if (g_memberGroupId!=DOX_NOGROUP) // end of member group
{
MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId);
@@ -3136,6 +3136,7 @@ void closeGroup(Entry *e,const char *fileName,int,bool foundInline)
{
info->doc = g_memberGroupDocs;
info->docFile = fileName;
+ info->docLine = line;
}
g_memberGroupId=DOX_NOGROUP;
g_memberGroupRelates.resize(0);
@@ -3169,7 +3170,7 @@ void initGroupInfo(Entry *e)
}
}
-static void groupAddDocs(Entry *e,const char *fileName)
+static void groupAddDocs(Entry *e)
{
if (e->section==Entry::MEMBERGRP_SEC)
{
@@ -3184,7 +3185,8 @@ static void groupAddDocs(Entry *e,const char *fileName)
if (info)
{
info->doc = g_memberGroupDocs;
- info->docFile = fileName;
+ info->docFile = e->docFile;
+ info->docLine = e->docLine;
info->setRefItems(e->sli);
}
e->doc.resize(0);
diff --git a/src/membergroup.cpp b/src/membergroup.cpp
index 08f951c..cbda94d 100644
--- a/src/membergroup.cpp
+++ b/src/membergroup.cpp
@@ -42,7 +42,7 @@ MemberGroup::MemberGroup()
}
MemberGroup::MemberGroup(Definition *parent,
- int id,const char *hdr,const char *d,const char *docFile)
+ int id,const char *hdr,const char *d,const char *docFile,int docLine)
{
//printf("New member group id=%d header=%s desc=%s\n",id,hdr,d);
memberList = new MemberList(MemberListType_memberGroup);
@@ -56,6 +56,7 @@ MemberGroup::MemberGroup(Definition *parent,
m_numDocMembers = -1;
m_parent = parent;
m_docFile = docFile;
+ m_docLine = docLine;
m_xrefListItems = 0;
//printf("Member group docs=`%s'\n",doc.data());
}
diff --git a/src/membergroup.h b/src/membergroup.h
index fa5520e..c42efc9 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -42,7 +42,7 @@ class MemberGroup
public:
MemberGroup();
MemberGroup(Definition *parent,int id,const char *header,
- const char *docs,const char *docFile);
+ const char *docs,const char *docFile,int docLine);
~MemberGroup();
QCString header() const { return grpHeader; }
int groupId() const { return grpId; }
@@ -89,6 +89,9 @@ class MemberGroup
Definition *parent() const { return m_parent; }
QCString anchor() const;
+ QCString docFile() const { return m_docFile; }
+ int docLine() const { return m_docLine; }
+
void marshal(StorageIntf *s);
void unmarshal(StorageIntf *s);
@@ -105,6 +108,7 @@ class MemberGroup
int m_numDocMembers;
Definition *m_parent;
QCString m_docFile;
+ int m_docLine;
QList<ListItemInfo> *m_xrefListItems;
};
@@ -137,12 +141,13 @@ class MemberGroupSDict : public SIntDict<MemberGroup>
/** Data collected for a member group */
struct MemberGroupInfo
{
- MemberGroupInfo() : m_sli(0) {}
+ MemberGroupInfo() : m_sli(0), docLine(-1) {}
~MemberGroupInfo() { delete m_sli; m_sli=0; }
void setRefItems(const QList<ListItemInfo> *sli);
QCString header;
QCString doc;
QCString docFile;
+ int docLine;
QCString compoundName;
QList<ListItemInfo> *m_sli;
};
diff --git a/src/memberlist.cpp b/src/memberlist.cpp
index 75e9785..b985412 100644
--- a/src/memberlist.cpp
+++ b/src/memberlist.cpp
@@ -627,7 +627,7 @@ void MemberList::writeDeclarations(OutputList &ol,
{
//printf("Member group has docs!\n");
ol.startMemberGroupDocs();
- ol.generateDoc("[generated]",-1,ctx,0,mg->documentation()+"\n",FALSE,FALSE);
+ ol.generateDoc(mg->docFile(),mg->docLine(),ctx,0,mg->documentation()+"\n",FALSE,FALSE);
ol.endMemberGroupDocs();
}
ol.startMemberGroup();
diff --git a/src/util.cpp b/src/util.cpp
index 432a76f..e6ea287 100755
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -5901,7 +5901,8 @@ void addMembersToMemberGroup(MemberList *ml,
groupId,
info->header,
info->doc,
- info->docFile
+ info->docFile,
+ info->docLine
);
(*ppMemberGroupSDict)->append(groupId,mg);
}
@@ -5933,7 +5934,8 @@ void addMembersToMemberGroup(MemberList *ml,
groupId,
info->header,
info->doc,
- info->docFile
+ info->docFile,
+ info->docLine
);
(*ppMemberGroupSDict)->append(groupId,mg);
}