https://github.com/SamrudhNelli updated https://github.com/llvm/llvm-project/pull/181347
>From ad23cfaa3b9d265e5d52cde46854dac269a20810 Mon Sep 17 00:00:00 2001 From: Samrudh Nelli <[email protected]> Date: Fri, 13 Feb 2026 16:46:45 +0530 Subject: [PATCH 1/2] [clang-doc] Display enum type along with enum name in HTML view For named variables Previous output : enum XYZ Current output : enum XYZ : unsigned int For unnamed variables Previous output : enum Current output : enum : unsigned int Fixes #llvm/166652 --- clang-tools-extra/clang-doc/JSONGenerator.cpp | 10 +++++++--- .../clang-doc/assets/enum-template.mustache | 2 +- clang-tools-extra/test/clang-doc/enum.cpp | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp index 5051e7e6e690d..e44bdaaf8e510 100644 --- a/clang-tools-extra/clang-doc/JSONGenerator.cpp +++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp @@ -565,9 +565,13 @@ static void serializeInfo(const EnumInfo &I, json::Object &Obj, if (I.BaseType) { json::Value BaseTypeVal = Object(); auto &BaseTypeObj = *BaseTypeVal.getAsObject(); - BaseTypeObj["Name"] = I.BaseType->Type.Name; - BaseTypeObj["QualName"] = I.BaseType->Type.QualName; - BaseTypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR)); + // Create a nested 'Type' object so the template can find {{Type.Name}} + json::Value TypeVal = Object(); + auto &TypeObj = *TypeVal.getAsObject(); + TypeObj["Name"] = I.BaseType->Type.Name; + TypeObj["QualName"] = I.BaseType->Type.QualName; + TypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR)); + BaseTypeObj["Type"] = TypeVal; Obj["BaseType"] = BaseTypeVal; } diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache b/clang-tools-extra/clang-doc/assets/enum-template.mustache index 7434b7bfce347..dc4260dcc37e2 100644 --- a/clang-tools-extra/clang-doc/assets/enum-template.mustache +++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache @@ -7,7 +7,7 @@ }} <div id="{{USR}}" class="delimiter-container"> <div> - <pre><code class="language-cpp code-clang-doc">enum {{Name}}</code></pre> + <pre><code class="language-cpp code-clang-doc">enum {{Name}}{{#BaseType}} : {{Type.Name}}{{/BaseType}}</code></pre> </div> {{! Enum Values }} <table class="table-wrapper"> diff --git a/clang-tools-extra/test/clang-doc/enum.cpp b/clang-tools-extra/test/clang-doc/enum.cpp index 6e11bbf065f25..a866f2e43aa75 100644 --- a/clang-tools-extra/test/clang-doc/enum.cpp +++ b/clang-tools-extra/test/clang-doc/enum.cpp @@ -82,7 +82,7 @@ enum class Shapes { // COM: FIXME: Serialize "enum class" in template // HTML-INDEX: <div> -// HTML-INDEX: <pre><code class="language-cpp code-clang-doc">enum Shapes</code></pre> +// HTML-INDEX: <pre><code class="language-cpp code-clang-doc">enum Shapes : int</code></pre> // HTML-INDEX: </div> // HTML-INDEX: <table class="table-wrapper"> // HTML-INDEX: <tbody> >From 46b3401fcf5b2e5cc80fecf2ccc467422bde3d80 Mon Sep 17 00:00:00 2001 From: Samrudh Nelli <[email protected]> Date: Sat, 14 Feb 2026 11:21:15 +0530 Subject: [PATCH 2/2] fix: remove duplicate info from the json --- clang-tools-extra/clang-doc/JSONGenerator.cpp | 8 +------- clang-tools-extra/clang-doc/assets/enum-template.mustache | 2 +- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/clang-tools-extra/clang-doc/JSONGenerator.cpp b/clang-tools-extra/clang-doc/JSONGenerator.cpp index e44bdaaf8e510..47d69ce38ffbb 100644 --- a/clang-tools-extra/clang-doc/JSONGenerator.cpp +++ b/clang-tools-extra/clang-doc/JSONGenerator.cpp @@ -565,13 +565,7 @@ static void serializeInfo(const EnumInfo &I, json::Object &Obj, if (I.BaseType) { json::Value BaseTypeVal = Object(); auto &BaseTypeObj = *BaseTypeVal.getAsObject(); - // Create a nested 'Type' object so the template can find {{Type.Name}} - json::Value TypeVal = Object(); - auto &TypeObj = *TypeVal.getAsObject(); - TypeObj["Name"] = I.BaseType->Type.Name; - TypeObj["QualName"] = I.BaseType->Type.QualName; - TypeObj["USR"] = toHex(toStringRef(I.BaseType->Type.USR)); - BaseTypeObj["Type"] = TypeVal; + BaseTypeObj["Name"] = I.BaseType->Type.QualName; Obj["BaseType"] = BaseTypeVal; } diff --git a/clang-tools-extra/clang-doc/assets/enum-template.mustache b/clang-tools-extra/clang-doc/assets/enum-template.mustache index dc4260dcc37e2..809539565e185 100644 --- a/clang-tools-extra/clang-doc/assets/enum-template.mustache +++ b/clang-tools-extra/clang-doc/assets/enum-template.mustache @@ -7,7 +7,7 @@ }} <div id="{{USR}}" class="delimiter-container"> <div> - <pre><code class="language-cpp code-clang-doc">enum {{Name}}{{#BaseType}} : {{Type.Name}}{{/BaseType}}</code></pre> + <pre><code class="language-cpp code-clang-doc">enum {{Name}}{{#BaseType}} : {{Name}}{{/BaseType}}</code></pre> </div> {{! Enum Values }} <table class="table-wrapper"> _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
