llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang-tools-extra Author: Erick Velez (evelez7) <details> <summary>Changes</summary> Emit namespaces in HTML for namespaces pages. --- Full diff: https://github.com/llvm/llvm-project/pull/172076.diff 9 Files Affected: - (modified) clang-tools-extra/clang-doc/JSONGenerator.cpp (+5-2) - (modified) clang-tools-extra/clang-doc/assets/namespace-template.mustache (+28) - (modified) clang-tools-extra/test/clang-doc/json/class-requires.cpp (-1) - (modified) clang-tools-extra/test/clang-doc/json/class.cpp (-1) - (modified) clang-tools-extra/test/clang-doc/json/compound-constraints.cpp (-11) - (modified) clang-tools-extra/test/clang-doc/json/function-requires.cpp (-2) - (modified) clang-tools-extra/test/clang-doc/json/namespace.cpp (+1-1) - (modified) clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp (+20) - (modified) clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp (+1-1) ``````````diff diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp index 8828414cb3925..f57ca4b32e7a5 100644 --- a/clang-tools-extra/clang-doc/JSONGenerator.cpp +++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp @@ -318,7 +318,8 @@ serializeCommonAttributes(const Info &I, json::Object &Obj, } static void serializeReference(const Reference &Ref, Object &ReferenceObj) { - ReferenceObj["Path"] = Ref.Path; + if (!Ref.Path.empty()) + ReferenceObj["Path"] = Ref.Path; ReferenceObj["Name"] = Ref.Name; ReferenceObj["QualName"] = Ref.QualName; ReferenceObj["USR"] = toHex(toStringRef(Ref.USR)); @@ -620,9 +621,11 @@ static void serializeInfo(const NamespaceInfo &I, json::Object &Obj, if (I.USR == GlobalNamespaceID) Obj["Name"] = "Global Namespace"; - if (!I.Children.Namespaces.empty()) + if (!I.Children.Namespaces.empty()) { serializeArray(I.Children.Namespaces, Obj, "Namespaces", SerializeReferenceLambda); + Obj["HasNamespaces"] = true; + } static auto SerializeInfo = [RepositoryUrl](const auto &Info, Object &Object) { diff --git a/clang-tools-extra/clang-doc/assets/namespace-template.mustache b/clang-tools-extra/clang-doc/assets/namespace-template.mustache index 5edce48cee6d8..6a43def0386d5 100644 --- a/clang-tools-extra/clang-doc/assets/namespace-template.mustache +++ b/clang-tools-extra/clang-doc/assets/namespace-template.mustache @@ -57,10 +57,38 @@ </ul> </li> {{/HasFunctions}} + {{#HasNamespaces}} + <li class="sidebar-section"> + <a class="sidebar-item" href="#Namespaces">Namespaces</a> + </li> + <li> + <ul> + {{#Namespaces}} + <li class="sidebar-item-container"> + <a class="sidebar-item" href="#{{USR}}">{{Name}}</a> + </li> + {{/Namespaces}} + </ul> + </li> + {{/HasNamespaces}} </ul> </div> <div class="resizer" id="resizer"></div> <div class="content"> + {{#HasNamespaces}} + <section id="Namespaces" class="section-container"> + <h2>Namespaces</h2> + <ul class="class-container"> + {{#Namespaces}} + <li id="{{USR}}"> + <a href="{{^Path}}../{{Name}}/{{/Path}}{{#Path}}./{{Name}}/{{/Path}}index.html"> + <pre><code class="language-cpp code-clang-doc">namespace {{Name}}</code></pre> + </a> + </li> + {{/Namespaces}} + </ul> + </section> + {{/HasNamespaces}} {{#HasEnums}} <section id="Enums" class="section-container"> <h2>Enumerations</h2> diff --git a/clang-tools-extra/test/clang-doc/json/class-requires.cpp b/clang-tools-extra/test/clang-doc/json/class-requires.cpp index e10c5e89f6e17..6c35f2303b6dd 100644 --- a/clang-tools-extra/test/clang-doc/json/class-requires.cpp +++ b/clang-tools-extra/test/clang-doc/json/class-requires.cpp @@ -23,7 +23,6 @@ struct MyClass; // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "Addable<T>", // CHECK-NEXT: "Name": "Addable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Addable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } diff --git a/clang-tools-extra/test/clang-doc/json/class.cpp b/clang-tools-extra/test/clang-doc/json/class.cpp index 1c0d5d5ab567a..79ac20f954f7a 100644 --- a/clang-tools-extra/test/clang-doc/json/class.cpp +++ b/clang-tools-extra/test/clang-doc/json/class.cpp @@ -95,7 +95,6 @@ struct MyClass { // CHECK-NEXT: ], // CHECK-NEXT: "Reference": { // CHECK-NEXT: "Name": "friendFunction", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "friendFunction", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, diff --git a/clang-tools-extra/test/clang-doc/json/compound-constraints.cpp b/clang-tools-extra/test/clang-doc/json/compound-constraints.cpp index 5b15a88d562de..afaad8f5d6775 100644 --- a/clang-tools-extra/test/clang-doc/json/compound-constraints.cpp +++ b/clang-tools-extra/test/clang-doc/json/compound-constraints.cpp @@ -32,7 +32,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, @@ -40,7 +39,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "Decrementable<T>", // CHECK-NEXT: "Name": "Decrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Decrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } @@ -51,7 +49,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, @@ -59,7 +56,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "Decrementable<T>", // CHECK-NEXT: "Name": "Decrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Decrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } @@ -70,21 +66,18 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Decrementable<T>", // CHECK-NEXT: "Name": "Decrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Decrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, // CHECK-NEXT: { // CHECK-NEXT: "Expression": "PreIncrementable<T>", // CHECK-NEXT: "Name": "PreIncrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "PreIncrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, @@ -92,7 +85,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "PreDecrementable<T>", // CHECK-NEXT: "Name": "PreDecrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "PreDecrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } @@ -103,14 +95,12 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, // CHECK-NEXT: { // CHECK-NEXT: "Expression": "Decrementable<T>", // CHECK-NEXT: "Name": "Decrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Decrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: }, @@ -118,7 +108,6 @@ template<typename T> requires (Incrementable<T> && Decrementable<T>) || PreIncre // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "PreIncrementable<T>", // CHECK-NEXT: "Name": "PreIncrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "PreIncrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } diff --git a/clang-tools-extra/test/clang-doc/json/function-requires.cpp b/clang-tools-extra/test/clang-doc/json/function-requires.cpp index 931bb07edb836..8c86b1f93cc5e 100644 --- a/clang-tools-extra/test/clang-doc/json/function-requires.cpp +++ b/clang-tools-extra/test/clang-doc/json/function-requires.cpp @@ -37,7 +37,6 @@ template<Incrementable T> Incrementable auto incrementTwo(T t); // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } @@ -76,7 +75,6 @@ template<Incrementable T> Incrementable auto incrementTwo(T t); // CHECK-NEXT: "End": true, // CHECK-NEXT: "Expression": "Incrementable<T>", // CHECK-NEXT: "Name": "Incrementable", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "Incrementable", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } diff --git a/clang-tools-extra/test/clang-doc/json/namespace.cpp b/clang-tools-extra/test/clang-doc/json/namespace.cpp index 3beb6b91010d6..2f79cfa404f07 100644 --- a/clang-tools-extra/test/clang-doc/json/namespace.cpp +++ b/clang-tools-extra/test/clang-doc/json/namespace.cpp @@ -74,6 +74,7 @@ typedef int MyTypedef; // CHECK-NEXT: ], // CHECK-NEXT: "HasEnums": true, // CHECK-NEXT: "HasFunctions": true, +// CHECK-NEXT: "HasNamespaces": true, // CHECK-NEXT: "HasRecords": true, // CHECK-NEXT: "InfoType": "namespace", // CHECK-NEXT: "Name": "Global Namespace", @@ -81,7 +82,6 @@ typedef int MyTypedef; // CHECK-NEXT: { // CHECK-NEXT: "End": true, // CHECK-NEXT: "Name": "NestedNamespace", -// CHECK-NEXT: "Path": "", // CHECK-NEXT: "QualName": "NestedNamespace", // CHECK-NEXT: "USR": "{{[0-9A-F]*}}" // CHECK-NEXT: } diff --git a/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp b/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp index 7fbf51c4efd30..00aa6e9e8d12d 100644 --- a/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp +++ b/clang-tools-extra/test/clang-doc/mustache-separate-namespace.cpp @@ -21,10 +21,30 @@ namespace MyNamespace { // CHECK-GLOBAL-NEXT: <div class="sidebar"> // CHECK-GLOBAL-NEXT: <h2>Global Namespace</h2> // CHECK-GLOBAL-NEXT: <ul> +// CHECK-GLOBAL-NEXT: <li class="sidebar-section"> +// CHECK-GLOBAL-NEXT: <a class="sidebar-item" href="#Namespaces">Namespaces</a> +// CHECK-GLOBAL-NEXT: </li> +// CHECK-GLOBAL-NEXT: <li> +// CHECK-GLOBAL-NEXT: <ul> +// CHECK-GLOBAL-NEXT: <li class="sidebar-item-container"> +// CHECK-GLOBAL-NEXT: <a class="sidebar-item" href="#{{[0-9A-F]*}}">MyNamespace</a> +// CHECK-GLOBAL-NEXT: </li> +// CHECK-GLOBAL-NEXT: </ul> +// CHECK-GLOBAL-NEXT: </li> // CHECK-GLOBAL-NEXT: </ul> // CHECK-GLOBAL-NEXT: </div> // CHECK-GLOBAL-NEXT: <div class="resizer" id="resizer"></div> // CHECK-GLOBAL-NEXT: <div class="content"> +// CHECK-GLOBAL-NEXT: <section id="Namespaces" class="section-container"> +// CHECK-GLOBAL-NEXT: <h2>Namespaces</h2> +// CHECK-GLOBAL-NEXT: <ul class="class-container"> +// CHECK-GLOBAL-NEXT: <li id="{{[0-9A-F]*}}"> +// CHECK-GLOBAL-NEXT: <a href="../MyNamespace/index.html"> +// CHECK-GLOBAL-NEXT: <pre><code class="language-cpp code-clang-doc">namespace MyNamespace</code></pre> +// CHECK-GLOBAL-NEXT: </a> +// CHECK-GLOBAL-NEXT: </li> +// CHECK-GLOBAL-NEXT: </ul> +// CHECK-GLOBAL-NEXT: </section> // CHECK-GLOBAL-NEXT: </div> // CHECK-GLOBAL-NEXT: </div> // CHECK-GLOBAL-NEXT: </main> diff --git a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp index e6eaabcb8127c..ee2c11061d706 100644 --- a/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp +++ b/clang-tools-extra/unittests/clang-doc/JSONGeneratorTest.cpp @@ -135,7 +135,6 @@ TEST_F(JSONGeneratorTest, emitRecordJSON) { { "End": true, "Name": "F", - "Path": "", "QualName": "", "USR": "0000000000000000000000000000000000000000" } @@ -247,6 +246,7 @@ TEST_F(JSONGeneratorTest, emitNamespaceJSON) { ], "HasEnums": true, "HasFunctions": true, + "HasNamespaces": true, "HasRecords": true, "InfoType": "namespace", "Name": "Global Namespace", `````````` </details> https://github.com/llvm/llvm-project/pull/172076 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
