fix: replace the XML generator with a reflection-based one#1151
fix: replace the XML generator with a reflection-based one#1151gennaroprota wants to merge 7 commits intocppalliance:developfrom
Conversation
ℹ️ InfoNote Commit ✨ Highlights
🧾 Changes by Scope
🔝 Top Files
|
|
An automated preview of the documentation is available at https://1151.mrdocs.prtest2.cppalliance.org/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-01-21 17:01:42 UTC |
|
I think we should be removing way more code than including for this PR to make sense. The test outputs haven't even changed. This should be a bug fix, not a refactor. The biggest problem with this generator is that it's not in sync with the metadata. And the reason this generator is out of sync is that we didn't have reflection, and manually keeping it in sync was too expensive and fragile. So what we want to do is let reflection handle the whole thing, and the whole generator will have only one or two functions that recursively iterate over everything to generate the metadata. 🥳 This means the XML outputs will change completely, as they now reflect everything in the metadata, which is what this generator was meant for. Our intention is not to recreate the broken version, but to recreate it with reflection. If we don't fix it, reflection would mean more code rather than less, as we now have to force reflection to recreate the errors we had without it (which is even harder than just keeping the original errors). And that's going to be extra code just to maintain it broken. I think another issue here is that we should probably address the other issue first, where we should remove those small workarounds from reflection to make it reflect into different key names. Only canonical names should be used. All generators should have access to the same fields with the same names. Making this happen is basically just the finalization of the previous issue we already merged. And maybe the @meta field is required to make that happen, since ambiguity might arise. Only after establishing the canonical field names can we use them to generate XML. 😅 |
|
What happened to this PR? I thought it would become more active after #1153 🚀 |
|
I removed the commit before pulling, after merging #1153, and GitHub closed it. I shouldn't have used the |
|
Oh 😅 |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## develop #1151 +/- ##
===========================================
+ Coverage 76.38% 77.02% +0.64%
===========================================
Files 311 310 -1
Lines 29672 28974 -698
Branches 5863 5781 -82
===========================================
- Hits 22664 22318 -346
+ Misses 4735 4429 -306
+ Partials 2273 2227 -46 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
2ac16d5 to
0312652
Compare
This fixes the XML generator, which was out of sync with our metadata, by replacing it with a reflection-based implementation. The XML output structure changes completely, but contains equivalent information.
Reason: See the new code comment in codecov.yml.
This adds support for all five admonition types, with corresponding tests, plus tests for type-based friend declarations and pointers to members.
0312652 to
7cfaeda
Compare
|
An automated preview of the documentation is available at https://1151.mrdocs.prtest2.cppalliance.org/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-02-27 16:27:09 UTC |
4b8a263 to
4012496
Compare
This adds an `is-bottleneck` matrix flag for the following configurations: - Any compiler with MSan - Apple Clang + ASan - Apple Clang + UBSan and, for these entries, skips the AsciiDoc/HTML golden tests and self-doc test while still running all the other tests. This reduces the wall-clock time of the overall CI run by removing the heaviest tests.
0338acf to
e4510f8
Compare
On pull_request, only generate the AsciiDoc format (the one that goes to the website after Asciidoctor rendering). The XML and HTML formats are skipped because they are never published from a PR.
Demo generation previously swallowed failures silently due to the absence of `set -e`. Each demo now checks its exit code: failures remove partial output, and the full list with reproduction commands is reported at the end of the step.
e4510f8 to
86824a8
Compare
The remote documentation step fetches and builds develop, master, and all tags. This content is unrelated to the PR and is only needed for website publishing. The local documentation step (which builds only HEAD) still runs and validates that the PR does not break doc generation.
ec65f99 to
306c09f
Compare
@alandefreitas: Please let me know what you think and... if I have commented it too much :-).