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 560623 - Base classes of template mixin classes not shown in inheritance diagrams
Base classes of template mixin classes not shown in inheritance diagrams
Status: RESOLVED FIXED
Product: doxygen
Classification: Other
Component: general
1.5.6
Other All
: Normal normal
: ---
Assigned To: Dimitri van Heesch
Dimitri van Heesch
Depends on:
Blocks:
 
 
Reported: 2008-11-13 10:33 UTC by Joachim Reichel
Modified: 2009-06-10 09:20 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Joachim Reichel 2008-11-13 10:33:06 UTC
Please describe the problem:
Base classes of template mixin classe are no longer shown in inheritance diagrams. 

Steps to reproduce:
namespace N {
/// class Foo
class Foo {};
/// class Mixin
template<class T> class Mixin : public T {};
/// class Bar
class Bar : public Mixin<Foo> {};
}

Actual results:
The inheritance diagram of N::Bar looks like
N::Mixin<N::Foo>  <-- N::Bar


Expected results:
An inheritance diagram of N::Bar that looks like
N::Foo <-- N::Mixin<N::Foo>  <-- N::Bar

That is the diagram as it is displayed in 1.4.6.

Does this happen every time?
Yes.

Other information:
The inheritance diagram was fine in 1.4.6. The base class is missing in 1.4.7 and 1.5.6 (I haven't checked the versions in between).

The problem does not show up if all classes are in the global namespace.

In 1.5.7 the behaviour changes again (indepent of a particular namespace or the global namespace): The formal template parameter T is shown as base class.
Comment 1 Joachim Reichel 2008-12-12 12:36:03 UTC
The first problem (from 1.4.6 to 1.4.7) was introduced in revision 545.
The second problem (from 1.5.6 to 1.5.7) was introduced in revision 649.
Comment 2 Dimitri van Heesch 2008-12-24 21:50:23 UTC
Confirmed. Should be fixed (once more) in the next subversion update.
Comment 3 Dimitri van Heesch 2008-12-27 14:13:01 UTC
This bug was previously marked ASSIGNED, which means it should be fixed in
doxygen version 1.5.8. Please verify if this is indeed the case and reopen the
bug if you think it is not fixed (include any additional information that you
think can be relevant).
Comment 4 Joachim Reichel 2009-01-05 09:33:19 UTC
The inheritance diagram for N::Bar is fine now. Unfortunately, there is no inheritance diagram for N::Mixin. I think it should look like

T <-- N::Mixin<T>

On the other hand, a slightly more complicated example works as expected:

namespace N {
/// class Foo
class Foo {};
/// class Mixin
template<class T> class Mixin : public T {};
/// class Mixin2
template<class T> class Mixin2 : public Mixin<T> {};
/// class Bar
class Bar : public Mixin2<Foo> {};
}

Here I get for the mixin classes:

T <-- N::Mixin<T>
T <-- N::Mixin<T> <-- N::Mixin2<T>
Comment 5 Joachim Reichel 2009-06-10 09:20:04 UTC
I can no longer reproduce the problem reported in #4. Setting to FIXED.