After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 736992 - Member functions omitted from tagfile
Member functions omitted from tagfile
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: build
1.8.8
Other Windows
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2014-09-19 20:45 UTC by Robb Surridge
Modified: 2014-12-25 16:03 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
file that contains the derived class declaration (178 bytes, text/plain)
2014-09-19 20:46 UTC, Robb Surridge
Details
Simple test case that contains .h files and doxygen config (27.96 KB, application/zip)
2014-09-22 13:38 UTC, Robb Surridge
Details

Description Robb Surridge 2014-09-19 20:45:57 UTC
Virtual member functions are omitted from the tag file for base classes, and are instead listed only under the *first* derived class to occur in alphabetical order.

To illustrate the problem,
Comment 1 Robb Surridge 2014-09-19 20:46:46 UTC
Created attachment 286658 [details]
file that contains the derived class declaration
Comment 2 Robb Surridge 2014-09-19 20:50:19 UTC
Whoops, submitted accidentally while adding attachments.

Anyway, use both BaseClass.h and DerivedClass.h to generate a tag file. You'll see that BaseClass::functionOne() gets listed *only* under the compound for DerivedClass.

Also, note that alphabetical order and order of appearance in the tag file appears to play a role: if you rename ADerivedClass to simply "DerivedClass" or "ZDerivedClass" or something that comes *after* "BaseClass", the entry for functionOne() in the tag file gets placed where it should, under the BaseClass.

By trial and error, I discovered that this problem was introduced in 1.8.3.1. In 1.8.3 and before, the functions were always listed correctly. In 1.8.3.1 up to 1.8.8, virtual functions are getting put only under whatever child class comes up first in the order.
Comment 3 Dimitri van Heesch 2014-09-21 19:03:26 UTC
Hi Robb,

Can you please attach the whole example (source+config file in a zip). Now I have only DerivedClass.h
Comment 4 Robb Surridge 2014-09-22 13:38:22 UTC
Created attachment 286813 [details]
Simple test case that contains .h files and doxygen config
Comment 5 Robb Surridge 2014-09-22 13:41:16 UTC
Sorry about that.

The attached test case (tagfile_testcase.zip) has two headers, with a simple base class and derived class.

The only things I changed in the config were to set up the input, and to set the GENERATE_TAGFILE.

When you run the build, you'll see that the generated tagfile (mytagfile.tag) contains entries for both the base and derived classes. But the function BaseClass::functionOne() is only listed under the derived class, not under the base class.

-r
Comment 6 Dimitri van Heesch 2014-09-22 19:59:19 UTC
Confirmed. Should be fixed in the next GIT update.
Comment 7 Dimitri van Heesch 2014-12-25 16:03:01 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.8.9. Please verify if this is indeed the case. Reopen the
bug if you think it is not fixed and please include any additional information 
that you think can be relevant (preferrably in the form of a self-contained example).