documentation/doxygen: added support for C++20 concepts#232
documentation/doxygen: added support for C++20 concepts#232marzer wants to merge 2 commits intomosra:masterfrom
Conversation
d1760f4 to
5ae171e
Compare
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #232 +/- ##
==========================================
- Coverage 98.11% 98.03% -0.08%
==========================================
Files 27 27
Lines 6994 7026 +32
Branches 49 49
==========================================
+ Hits 6862 6888 +26
- Misses 132 138 +6
☔ View full report in Codecov by Sentry. |
also: - fixed `static` and `constexpr` leaking into variables (basically the same problem as mosra#228) - fixed a few tests that were broken with Doxygen 1.9.0+ - added support for C++20's `constinit`
5ae171e to
860c3cb
Compare
|
Just FYI, on current That "The number of regression tests for doxygen is indeed a bit small." Doxygen issue seems to be closed now, and yes, I'm fine with concepts not working before 1.9.6. |
This PR adds all the plumbing necessary to have C++20's
conceptsappear in the doxygen documentation.It also makes a number of other small fixes in order to have the tests behave better on Doxygen 1.9.0 (e.g.
constexprandstaticleaking into variable types, similar to my previous fix for functions in #228).Overall this is a relatively substantial PR and there's still a number of boxes that need to be ticked, so I'm marking it as 'draft'.
Outstanding tasks:
Decide how to show the actual 'implementation' of the concepts.
<compounddef>but they also get an<initializer>). Since their implementations can be pretty verbose/non-trivial (example) it probably doesn't make sense to inline them in the same way an as enum initializer, and instead display it on the detail page (i.e. extend thebase-class-reference.htmltemplate). I have no idea how do that and have the syntax highlighting work, though.Decide what to do about this: C++ concepts are not linked to namespaces in XML output doxygen/doxygen#9622
<innerconcept>elements necessary to link concepts to their containing namespace. I've worked around this as part of the XML post-process in Poxy, but haven't yet made any attempt to backport those fixes to m.css (mostly because I'm still not familiar enough with the code to make a good decision about where that should happen). I could port that back to m.css (with some effort), but it also may be sufficient to simply say "hey concepts might be broken before Doxygen 1.9.6".Add tests