GNOME Bugzilla – Bug 560623
Base classes of template mixin classes not shown in inheritance diagrams
Last modified: 2009-06-10 09:20:04 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.
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.
Confirmed. Should be fixed (once more) in the next subversion update.
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).
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>
I can no longer reproduce the problem reported in #4. Setting to FIXED.