From 17048c00c229a4ff52e00ce166abf30cc786c882 Mon Sep 17 00:00:00 2001 From: Erick Velez Date: Wed, 8 Oct 2025 18:50:41 -0700 Subject: [PATCH] [clang-doc] simplify filename selection for namespaces determineFileName was confusing regarding namespaces. The comment and conditional were both misleading. Now, we just check against a static global namespace USR to make a file use "index", or just use the name. --- clang-tools-extra/clang-doc/JSONGenerator.cpp | 7 +++---- clang-tools-extra/clang-doc/Representation.h | 3 +++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp index 26794a5e34d02..6fba2114b8c38 100644 --- a/clang-tools-extra/clang-doc/JSONGenerator.cpp +++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp @@ -582,11 +582,10 @@ static SmallString<16> determineFileName(Info *I, SmallString<128> &Path) { if (I->IT == InfoType::IT_record) { auto *RecordSymbolInfo = static_cast(I); FileName = RecordSymbolInfo->MangledName; - } else if (I->IT == InfoType::IT_namespace && I->Name != "") - // Serialize the global namespace as index.json - FileName = I->Name; + } else if (I->USR == GlobalNamespaceID) + FileName = "index"; else - FileName = I->getFileBaseName(); + FileName = I->Name; sys::path::append(Path, FileName + ".json"); return FileName; } diff --git a/clang-tools-extra/clang-doc/Representation.h b/clang-tools-extra/clang-doc/Representation.h index 2a75f89696b7d..d8c2b9c0a5842 100644 --- a/clang-tools-extra/clang-doc/Representation.h +++ b/clang-tools-extra/clang-doc/Representation.h @@ -30,6 +30,9 @@ namespace doc { // SHA1'd hash of a USR. using SymbolID = std::array; +constexpr SymbolID GlobalNamespaceID = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + struct BaseRecordInfo; struct EnumInfo; struct FunctionInfo;