documentation/doxygen: added support for C++20 concepts
This PR adds all the plumbing necessary to have C++20's concepts appear 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. constexpr and static leaking 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.
- Doxygen treats concepts as being somewhere between a variable and a type (i.e. they are a fully-fledged
<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.
- Doxygen treats concepts as being somewhere between a variable and a type (i.e. they are a fully-fledged
-
[ ] Decide what to do about this: https://github.com/doxygen/doxygen/issues/9622
- Currently Doxygen's XML output is missing the
<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".
- Currently Doxygen's XML output is missing the
-
[ ] Add tests
Codecov Report
Patch coverage: 90.90% and project coverage change: -0.08 :warning:
Comparison is base (
3e0650a) 98.11% compared to head (2503273) 98.03%.
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
| Impacted Files | Coverage Δ | |
|---|---|---|
| documentation/doxygen.py | 98.68% <90.90%> (-0.27%) |
:arrow_down: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.