[clang-tools-extra] [clang-doc] add more test to clang-doc (PR #97518)

via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 2 21:30:45 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang-tools-extra

Author: None (PeterChou1)

<details>
<summary>Changes</summary>

This patches adds more e2e test to clang-doc which tests the html and markdown output. 
I've made the following changes
- Modified basic-project.test to also include the markdown output
- Added namespace.cpp which test anonymous namespace and nested namespace generation
- Added enum.cpp which test the enum output for clang-doc
- Added advance-project test project which test nested namespace, templates, enums



---

Patch is 94.38 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/97518.diff


13 Files Affected:

- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/database_template.json (+22) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Array.h (+35) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Circle.h (+32) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Shape.h (+49) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Utils.h (+38) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Array.cpp (+31) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Circle.cpp (+24) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Shape.cpp (+28) 
- (added) clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Utils.cpp (+37) 
- (added) clang-tools-extra/test/clang-doc/advance-project.test (+701) 
- (modified) clang-tools-extra/test/clang-doc/basic-project.test (+137-22) 
- (added) clang-tools-extra/test/clang-doc/enum.cpp (+68) 
- (added) clang-tools-extra/test/clang-doc/namespace.cpp (+548) 


``````````diff
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/database_template.json b/clang-tools-extra/test/clang-doc/Inputs/advance-project/database_template.json
new file mode 100644
index 0000000000000..8e9f814dd055b
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/database_template.json
@@ -0,0 +1,22 @@
+[
+  {
+    "directory": "$test_dir/Inputs/advance-project",
+    "command": "clang++ -o Array.o -I./include ./src/Array.cpp",
+    "file": "./src/Array.cpp"
+  },
+  {
+    "directory": "$test_dir/Inputs/advance-project",
+    "command": "clang++ -o Circle.o -I./include ./src/Circle.cpp",
+    "file": "./src/Circle.cpp"
+  },
+  {
+    "directory": "$test_dir/Inputs/advance-project",
+    "command": "clang++ -o Shape.o -I./include ./src/Shape.cpp",
+    "file": "./src/Shape.cpp"
+  },
+  {
+    "directory": "$test_dir/Inputs/advance-project",
+    "command": "clang++ -o Utils.o -I./include ./src/Utils.cpp",
+    "file": "./src/Utils.cpp"
+  }
+]
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Array.h b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Array.h
new file mode 100644
index 0000000000000..eef5168509159
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Array.h
@@ -0,0 +1,35 @@
+#pragma once
+
+/** @brief Maximum size for the IntArray typedef */
+#define MAX_SIZE 100
+
+/**
+ * @brief Template class for a simple array
+ *
+ * @tparam T The type of elements in the array
+ * @tparam Size The fixed size of the array
+ */
+template <typename T, int Size>
+class Array {
+public:
+    /** @brief Default constructor */
+    Array();
+
+    /**
+     * @brief Array access operator
+     *
+     * @param index The index of the element to access
+     * @return T& Reference to the element at the given index
+     */
+    T& operator[](int index);
+
+    /**
+     * @brief Get the size of the array
+     *
+     * @return int The size of the array
+     */
+    int size() const;
+
+private:
+    T m_data[Size]; /**< The array data */
+};
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Circle.h b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Circle.h
new file mode 100644
index 0000000000000..0188a7832a818
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Circle.h
@@ -0,0 +1,32 @@
+#pragma once
+
+#include "Shape.h"
+#include "Utils.h"
+
+namespace OuterNamespace {
+    namespace InnerNamespace {
+        /**
+         * @brief Circle class, derived from Shape
+         */
+        class Circle : public Shape {
+        public:
+            /**
+             * @brief Constructor
+             *
+             * @param id The unique identifier for the circle
+             * @param radius The radius of the circle
+             */
+            Circle(int id, double radius);
+
+            /**
+             * @brief Implementation of the draw function
+             *
+             * Draws the circle (in this case, prints circle information)
+             */
+            void draw() const override;
+
+        private:
+            double m_radius; /**< The radius of the circle */
+        };
+    }
+}
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Shape.h b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Shape.h
new file mode 100644
index 0000000000000..e2fedeed620cc
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Shape.h
@@ -0,0 +1,49 @@
+#pragma once
+
+/// Outer namespace
+namespace OuterNamespace {
+    /// Inner namespace
+    namespace InnerNamespace {
+        /**
+         * @brief Enum class for colors
+         */
+        enum class Color {
+            Red,   /**< Red color */
+            Green, /**< Green color */
+            Blue   /**< Blue color */
+        };
+
+        /**
+         * @brief Abstract base class for shapes
+         */
+        class Shape {
+        public:
+            /**
+             * @brief Constructor
+             *
+             * @param id The unique identifier for the shape
+             */
+            explicit Shape(int id);
+
+            /**
+             * @brief Virtual destructor
+             */
+            virtual ~Shape();
+
+            /**
+             * @brief Pure virtual function for drawing the shape
+             */
+            virtual void draw() const = 0;
+
+            /**
+             * @brief Getter for the shape's ID
+             *
+             * @return int The shape's ID
+             */
+            int getId() const;
+
+        private:
+            int m_id; /**< The shape's unique identifier */
+        };
+    }
+}
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Utils.h b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Utils.h
new file mode 100644
index 0000000000000..6e97b6441abe1
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Utils.h
@@ -0,0 +1,38 @@
+#pragma once
+
+/// Anonymous namespace for utility functions
+namespace {
+    /**
+     * @brief Generate a "random" number
+     *
+     * @note This is not actually random in this implementation
+     *
+     * @return int A predetermined "random" number
+     */
+    int getRandomNumber();
+
+    /**
+     * @brief Helper function to convert int to string
+     *
+     * @param value The integer value to convert
+     * @param buffer The char buffer to store the result
+     * @param index Reference to the current index in the buffer
+     */
+    void intToString(int value, char* buffer, int& index);
+
+    /**
+     * @brief Helper function to convert double to string (simplified)
+     *
+     * @param value The double value to convert
+     * @param buffer The char buffer to store the result
+     * @param index Reference to the current index in the buffer
+     */
+    void doubleToString(double value, char* buffer, int& index);
+
+    /**
+     * @brief Helper function to print a string
+     *
+     * @param str The null-terminated string to print
+     */
+    void print(const char* str);
+}
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Array.cpp b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Array.cpp
new file mode 100644
index 0000000000000..a871509cf2b4e
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Array.cpp
@@ -0,0 +1,31 @@
+#include "Array.h"
+
+// Implementation of Array<T, Size>
+
+/**
+* Initializes all elements of the array to their default value.
+*/
+template <typename T, int Size>
+Array<T, Size>::Array() {
+   // Implementation stub
+}
+
+/**
+* Array access operator for Array<T, Size>
+* Provides read and write access to elements in the array.
+* This implementation does not perform bounds checking
+*/
+template <typename T, int Size>
+T& Array<T, Size>::operator[](int index) {
+   // Implementation stub
+   static T dummy;
+   return dummy;
+}
+
+/**
+* Get the size of the array for Array<T, Size>
+*/
+template <typename T, int Size>
+int Array<T, Size>::size() const {
+   return Size;
+}
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Circle.cpp b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Circle.cpp
new file mode 100644
index 0000000000000..c0fe0fe087f7e
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Circle.cpp
@@ -0,0 +1,24 @@
+#include "Circle.h"
+
+namespace OuterNamespace {
+    namespace InnerNamespace {
+
+        /**
+         * Initializes a Circle object with a given ID and radius.
+         */
+        Circle::Circle(int id, double radius) : Shape(id), m_radius(radius) {
+            // Implementation stub
+        }
+
+        /**
+         * This function is responsible for drawing the circle. In a real
+         * implementation, this would perform the actual drawing operation.
+         * In this stub implementation, it simply prints information about
+         * the circle.
+         */
+        void Circle::draw() const {
+            // Implementation stub
+        }
+
+    } // namespace InnerNamespace
+} // namespace OuterNamespace
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Shape.cpp b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Shape.cpp
new file mode 100644
index 0000000000000..95e3f4b8fb40b
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Shape.cpp
@@ -0,0 +1,28 @@
+#include "Shape.h"
+
+namespace OuterNamespace {
+    namespace InnerNamespace {
+
+        /**
+         * Initializes a Shape object with a given ID.
+         */
+        Shape::Shape(int id) : m_id(id) {
+            // Implementation stub
+        }
+
+        /**
+         * Ensures proper cleanup of derived classes.
+         */
+        Shape::~Shape() {
+            // Implementation stub
+        }
+
+        /**
+         * Get unique identifier of the shape
+         */
+        int Shape::getId() const {
+            return m_id;
+        }
+
+    } // namespace InnerNamespace
+} // namespace OuterNamespace
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Utils.cpp b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Utils.cpp
new file mode 100644
index 0000000000000..f5bab5aa39ff4
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Utils.cpp
@@ -0,0 +1,37 @@
+#include "Utils.h"
+
+namespace {
+
+    /**
+     * This function returns a predetermined number to simulate randomness.
+     * In a real implementation, this would use a proper random number generator
+     */
+    int getRandomNumber() {
+        // Implementation stub
+        return 4;
+    }
+
+    /**
+     * Converts an integer value to its string representation and stores
+     * the result in the provided buffer.
+     */
+    void intToString(int value, char* buffer, int& index) {
+        // Implementation stub
+    }
+
+    /**
+     * Converts a double value to its string representation with two decimal
+     * places and stores the result in the provided buffer.
+     */
+    void doubleToString(double value, char* buffer, int& index) {
+        // Implementation stub
+    }
+
+    /**
+     * Prints the provided null-terminated string to the standard output.
+     */
+    void print(const char* str) {
+        // Implementation stub
+    }
+
+} // anonymous namespace
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/advance-project.test b/clang-tools-extra/test/clang-doc/advance-project.test
new file mode 100644
index 0000000000000..762b5b99e7d1a
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/advance-project.test
@@ -0,0 +1,701 @@
+// RUN: sed 's|$test_dir|%/S|g' %S/Inputs/advance-project/database_template.json > %t/build/compile_commands.json
+// RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=all-TUs %t/build/compile_commands.json
+// RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=all-TUs %t/build/compile_commands.json
+// RUN: FileCheck %s -input-file=%t/docs/index_json.js -check-prefix=JSON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Array.html -check-prefix=HTML-ARRAY
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-GLOBAL-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/Circle.html -check-prefix=HTML-CIRCLE
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/index.html -check-prefix=HTML-INNER-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/Shape.html -check-prefix=HTML-SHAPE
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/index.html -check-prefix=HTML-OUTER-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Array.md -check-prefix=MD-ARRAY
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-GLOBAL-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/Circle.md -check-prefix=MD-CIRCLE
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/index.md -check-prefix=MD-INNER
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/InnerNamespace/Shape.md -check-prefix=MD-SHAPE
+// RUN: FileCheck %s -input-file=%t/docs/OuterNamespace/index.md -check-prefix=MD-OUTER-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/all_files.md -check-prefix=MD-ALL-FILES
+// RUN: FileCheck %s -input-file=%t/docs/index.md -check-prefix=MD-INDEX
+
+// JSON-INDEX: async function LoadIndex() {
+// JSON-INDEX-NEXT: return{
+// JSON-INDEX-NEXT:   "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:   "Name": "",
+// JSON-INDEX-NEXT:   "RefType": "default",
+// JSON-INDEX-NEXT:   "Path": "",
+// JSON-INDEX-NEXT:   "Children": [
+// JSON-INDEX-NEXT:     {
+// JSON-INDEX-NEXT:       "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:       "Name": "@nonymous_namespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "@nonymous_namespace",
+// JSON-INDEX-NEXT:       "Children": []
+// JSON-INDEX-NEXT:     },
+// JSON-INDEX-NEXT:     {
+// JSON-INDEX-NEXT:       "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:       "Name": "GlobalNamespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "GlobalNamespace",
+// JSON-INDEX-NEXT:       "Children": [
+// JSON-INDEX-NEXT:         {
+// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "Array",
+// JSON-INDEX-NEXT:           "RefType": "record",
+// JSON-INDEX-NEXT:           "Path": "GlobalNamespace",
+// JSON-INDEX-NEXT:           "Children": []
+// JSON-INDEX-NEXT:         }
+// JSON-INDEX-NEXT:       ]
+// JSON-INDEX-NEXT:     },
+// JSON-INDEX-NEXT:     {
+// JSON-INDEX-NEXT:       "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:       "Name": "OuterNamespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "OuterNamespace",
+// JSON-INDEX-NEXT:       "Children": [
+// JSON-INDEX-NEXT:         {
+// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "InnerNamespace",
+// JSON-INDEX-NEXT:           "RefType": "namespace",
+// JSON-INDEX-NEXT:           "Path": "OuterNamespace{{[\/]+}}InnerNamespace",
+// JSON-INDEX-NEXT:           "Children": [
+// JSON-INDEX-NEXT:             {
+// JSON-INDEX-NEXT:               "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:               "Name": "Circle",
+// JSON-INDEX-NEXT:               "RefType": "record",
+// JSON-INDEX-NEXT:               "Path": "OuterNamespace{{[\/]+}}InnerNamespace",
+// JSON-INDEX-NEXT:               "Children": []
+// JSON-INDEX-NEXT:             },
+// JSON-INDEX-NEXT:             {
+// JSON-INDEX-NEXT:               "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:               "Name": "Shape",
+// JSON-INDEX-NEXT:               "RefType": "record",
+// JSON-INDEX-NEXT:               "Path": "OuterNamespace{{[\/]+}}InnerNamespace",
+// JSON-INDEX-NEXT:               "Children": []
+// JSON-INDEX-NEXT:             }
+// JSON-INDEX-NEXT:           ]
+// JSON-INDEX-NEXT:         }
+// JSON-INDEX-NEXT:       ]
+// JSON-INDEX-NEXT:     }
+// JSON-INDEX-NEXT:   ]
+// JSON-INDEX-NEXT: };
+// JSON-INDEX-NEXT: }
+
+// HTML-ANON-INDEX: <!DOCTYPE html>
+// HTML-ANON-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-ANON-INDEX-NEXT: <title>namespace @nonymous_namespace</title>
+// HTML-ANON-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-ANON-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-ANON-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-ANON-INDEX-NEXT: <header id="project-title"></header>
+// HTML-ANON-INDEX-NEXT: <main>
+// HTML-ANON-INDEX-NEXT:   <div id="sidebar-left" path="@nonymous_namespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-ANON-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-ANON-INDEX-NEXT:     <h1>namespace @nonymous_namespace</h1>
+// HTML-ANON-INDEX-NEXT:     <div>
+// HTML-ANON-INDEX-NEXT:       <div>
+// HTML-ANON-INDEX-NEXT:         <p> Anonymous namespace for utility functions</p>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:     </div>
+// HTML-ANON-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-ANON-INDEX-NEXT:     <div>
+// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">getRandomNumber</h3>
+// HTML-ANON-INDEX-NEXT:       <p>int getRandomNumber()</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
+// HTML-ANON-INDEX-NEXT:       <div>
+// HTML-ANON-INDEX-NEXT:         <div></div>
+// HTML-ANON-INDEX-NEXT:         <div>
+// HTML-ANON-INDEX-NEXT:           <p> This function returns a predetermined number to simulate randomness. In a real implementation, this would use a proper random number generator</p>
+// HTML-ANON-INDEX-NEXT:         </div>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">intToString</h3>
+// HTML-ANON-INDEX-NEXT:       <p>void intToString(int value, char * buffer, int & index)</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 18 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
+// HTML-ANON-INDEX-NEXT:       <div>
+// HTML-ANON-INDEX-NEXT:         <div></div>
+// HTML-ANON-INDEX-NEXT:         <div>
+// HTML-ANON-INDEX-NEXT:           <p> Converts an integer value to its string representation and stores the result in the provided buffer.</p>
+// HTML-ANON-INDEX-NEXT:         </div>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">doubleToString</h3>
+// HTML-ANON-INDEX-NEXT:       <p>void doubleToString(double value, char * buffer, int & index)</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 26 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
+// HTML-ANON-INDEX-NEXT:       <div>
+// HTML-ANON-INDEX-NEXT:         <div></div>
+// HTML-ANON-INDEX-NEXT:         <div>
+// HTML-ANON-INDEX-NEXT:           <p> Converts a double value to its string representation with two decimal places and stores the result in the provided buffer.</p>
+// HTML-ANON-INDEX-NEXT:         </div>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">print</h3>
+// HTML-ANON-INDEX-NEXT:       <p>void print(const char * str)</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 33 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
+// HTML-ANON-INDEX-NEXT:       <div>
+// HTML-ANON-INDEX-NEXT:         <div></div>
+// HTML-ANON-INDEX-NEXT:         <div>
+// HTML-ANON-INDEX-NEXT:           <p> Prints the provided null-terminated string to the standard output.</p>
+// HTML-ANON-INDEX-NEXT:         </div>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:     </div>
+// HTML-ANON-INDEX-NEXT:   </div>
+// HTML-ANON-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-ANON-INDEX-NEXT:     <ol>
+// HTML-ANON-INDEX-NEXT:       <li>
+// HTML-ANON-INDEX-NEXT:         <span>
+// HTML-ANON-INDEX-NEXT:           <a href="#Functions">Functions</a>
+// HTML-ANON-INDEX-NEXT:         </span>
+// HTML-ANON-INDEX-NEXT:         <ul>
+// HTML-ANON-INDEX-NEXT:           <li>
+// HTML-ANON-INDEX-NEXT:             <span>
+// HTML-ANON-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">getRandomNumber</a>
+// HTML-ANON-INDEX-NEXT:             </span>
+// HTML-ANON-INDEX-NEXT:           </li>
+// HTML-ANON-INDEX-NEXT:           <li>
+// HTML-ANON-INDEX-NEXT:             <span>
+// HTML-ANON-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">intToString</a>
+// HTML-ANON-INDEX-NEXT:             </span>
+// HTML-ANON-INDEX-NEXT:           </li>
+// HTML-ANON-INDEX-NEXT:           <li>
+// HTML-AN...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/97518


More information about the cfe-commits mailing list