Parameter types names duplicated with Doxygen 1.15.0
Describe the bug
In Doxygen 1.15.0, I'm seeing duplicated parameter type names in certain cases when building documentation for wxWidgets (C++). This seems to be happening when the parameter is a typedef to another class. In this case, wxObjectRefData is a typedef to wxRefCounter (from interface/wx/object.h):
typedef wxRefCounter wxObjectRefData;
Screenshots
See that wxObjectRefData is duplicated in GetRefData and SetRefData:
To Reproduce
Sorry the example isn't exactly minimal but you can see the problem in classwx_object.html. I'll try to make a more minimal example.
example.zip
Expected behavior Type name shouldn't be duplicated.
Version 1.15.0 on Fedora 43.
I've minimized the problem already to a smaller project and I see in the file classwx_object.html the construct:
<a class="el" href="object_8h.html#ab7149af7eced89712baaf20432d66e19">wxObjectRefData</a>
<a class="el" href="classwx_object_ref_data.html">wxObjectRefData</a>
So a double link, with 2 different destinations.
Example: example_2.tar.gz
I will have to do a bisect and see where the root cause of the problems lies. (A small indication is maybe the description of a class just above the typedef).
The bisection gave:
3fb8336b630e33ce766d97caca8e4e80341b2ede is the first bad commit
Commit: 3fb8336b630e33ce766d97caca8e4e80341b2ede [3fb8336]
Date: Monday, October 20, 2025 4:41:35 PM
issue #11799 Incorrect link for template argument
@doxygen any ideas?
I have done some tests trying to find a workaround for this:
- no change:
- replacing the typedef with the more modern
using wxObjectRefData = wxRefCounter;
- replacing the typedef with the more modern
- valid workarounds (the duplicate link disappears):
- renaming
wxObjectRefDatatowx_ObjectRefData - renaming both
wxObjectRefDatatowx_ObjectRefDataandwxObjecttowx_Object - changing the doxygen annotation from
@class wxObjectRefDatato@typedef wxObjectRefData
- renaming
Wrote a potential fix: https://github.com/doxygen/doxygen/pull/11896.
BTW thanks for doing the bisection, made this easy.
- Code has been integrated in master on GitHub (please don't close the issue as this will be done at the moment of an official release).