[clang-tools-extra] [clang-doc] Add a breadcrumb navigation bar (PR #173297)
Paul Kirth via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 5 13:05:03 PST 2026
================
@@ -321,6 +321,67 @@ serializeCommonAttributes(const Info &I, json::Object &Obj,
Obj["Location"] =
serializeLocation(Symbol->DefLoc.value(), RepositoryUrl);
}
+
+ if (!I.Contexts.empty()) {
+ json::Value ContextArray = json::Array();
+ auto &ContextArrayRef = *ContextArray.getAsArray();
+ ContextArrayRef.reserve(I.Contexts.size());
+
+ std::string CurrentRelativePath;
+ bool PreviousRecord = false;
+ for (const auto &Current : I.Contexts) {
+ json::Value ContextVal = Object();
+ Object &Context = *ContextVal.getAsObject();
+ serializeReference(Current, Context);
+
+ if (ContextArrayRef.empty() && I.IT == InfoType::IT_record) {
+ // If the record's immediate context is a namespace, then the
+ // "index.html" is in the same directory.
+ if (Current.DocumentationFileName == "index") {
+ PreviousRecord = false;
+ Context["RelativePath"] = "./";
+ }
+ // If the immediate context is a record, then the file is one level
+ // above
+ else {
----------------
ilovepi wrote:
Can we keep the `} else {` bit on the same line? It took me a second to realize this wasn't a second condition. The comment can go inside the block, or could be folded into the comment above:
```
... directory. Otherwise, the immediate context is a record, and the file is one level above.
```
https://github.com/llvm/llvm-project/pull/173297
More information about the cfe-commits
mailing list