From 790887ea3f63c051954a4cd49f044fa4f536867d Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 14 Sep 2015 19:58:04 +0200 Subject: Bug 753500 - $file when using @name is wrong --- src/commentscan.l | 16 +++++++++------- src/membergroup.cpp | 3 ++- src/membergroup.h | 9 +++++++-- src/memberlist.cpp | 2 +- src/util.cpp | 6 ++++-- 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 *m_xrefListItems; }; @@ -137,12 +141,13 @@ class MemberGroupSDict : public SIntDict /** 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 *sli); QCString header; QCString doc; QCString docFile; + int docLine; QCString compoundName; QList *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); } -- cgit v0.12