[clang-tools-extra] [clang-doc] Add another test project to clang-doc (PR #97518)

via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 3 20:24:01 PDT 2024


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

>From a1a157a547e5ec10a6d6e443e60834f2e9d47352 Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Tue, 2 Jul 2024 22:03:05 -0400
Subject: [PATCH 1/6] [clang-doc] add more tests

---
 .../advance-project/database_template.json    |  22 +
 .../Inputs/advance-project/include/Array.h    |  35 +
 .../Inputs/advance-project/include/Circle.h   |  32 +
 .../Inputs/advance-project/include/Shape.h    |  49 ++
 .../Inputs/advance-project/include/Utils.h    |  38 +
 .../Inputs/advance-project/src/Array.cpp      |  31 +
 .../Inputs/advance-project/src/Circle.cpp     |  24 +
 .../Inputs/advance-project/src/Shape.cpp      |  28 +
 .../Inputs/advance-project/src/Utils.cpp      |  37 +
 .../test/clang-doc/advance-project.test       | 706 ++++++++++++++++++
 .../test/clang-doc/basic-project.test         | 164 +++-
 clang-tools-extra/test/clang-doc/enum.cpp     |  68 ++
 .../test/clang-doc/namespace.cpp              | 545 ++++++++++++++
 .../test/clang-doc/templates.cpp              |  38 +
 14 files changed, 1796 insertions(+), 21 deletions(-)
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/database_template.json
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Array.h
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Circle.h
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Shape.h
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/include/Utils.h
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Array.cpp
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Circle.cpp
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Shape.cpp
 create mode 100644 clang-tools-extra/test/clang-doc/Inputs/advance-project/src/Utils.cpp
 create mode 100644 clang-tools-extra/test/clang-doc/advance-project.test
 create mode 100644 clang-tools-extra/test/clang-doc/enum.cpp
 create mode 100644 clang-tools-extra/test/clang-doc/namespace.cpp

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..6c3ec5bd33a7c
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/advance-project.test
@@ -0,0 +1,706 @@
+// RUN: rm -rf %t && mkdir -p %t/docs %t/build
+// RUN: sed 's|$test_dir|%/S|g' %S/Inputs/basic-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/@anonymous_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/@anonymous_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-ANON-INDEX-NEXT:             <span>
+// HTML-ANON-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">doubleToString</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})}}">print</a>
+// HTML-ANON-INDEX-NEXT:             </span>
+// HTML-ANON-INDEX-NEXT:           </li>
+// HTML-ANON-INDEX-NEXT:         </ul>
+// HTML-ANON-INDEX-NEXT:       </li>
+// HTML-ANON-INDEX-NEXT:     </ol>
+// HTML-ANON-INDEX-NEXT:   </div>
+// HTML-ANON-INDEX-NEXT: </main>
+
+// HTML-ARRAY: <!DOCTYPE html>
+// HTML-ARRAY-NEXT: <meta charset="utf-8"/>
+// HTML-ARRAY-NEXT: <title>class Array</title>
+// HTML-ARRAY-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-ARRAY-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-ARRAY-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-ARRAY-NEXT: <header id="project-title"></header>
+// HTML-ARRAY-NEXT: <main>
+// HTML-ARRAY-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-ARRAY-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-ARRAY-NEXT:     <h1>class Array</h1>
+// HTML-ARRAY-NEXT:     <p>Defined at line 13 of file .{{[\/]}}include{{[\/]}}Array.h</p>
+// HTML-ARRAY-NEXT:     <div>
+// HTML-ARRAY-NEXT:       <div></div>
+// HTML-ARRAY-NEXT:     </div>
+// HTML-ARRAY-NEXT:     <h2 id="Members">Members</h2>
+// HTML-ARRAY-NEXT:     <ul>
+// HTML-ARRAY-NEXT:       <li>private T[Size] m_data</li>
+// HTML-ARRAY-NEXT:     </ul>
+// HTML-ARRAY-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-ARRAY-NEXT:     <div>
+// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Array<T, Size></h3>
+// HTML-ARRAY-NEXT:       <p>public void Array<T, Size>()</p>
+// HTML-ARRAY-NEXT:       <p>Defined at line 8 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
+// HTML-ARRAY-NEXT:       <div>
+// HTML-ARRAY-NEXT:         <div></div>
+// HTML-ARRAY-NEXT:         <div>
+// HTML-ARRAY-NEXT:           <p> Initializes all elements of the array to their default value.</p>
+// HTML-ARRAY-NEXT:         </div>
+// HTML-ARRAY-NEXT:       </div>
+// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">operator[]</h3>
+// HTML-ARRAY-NEXT:       <p>public T & operator[](int index)</p>
+// HTML-ARRAY-NEXT:       <p>Defined at line 18 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
+// HTML-ARRAY-NEXT:       <div>
+// HTML-ARRAY-NEXT:         <div></div>
+// HTML-ARRAY-NEXT:         <div>
+// HTML-ARRAY-NEXT:           <p> Array access operator for Array<T, Size> Provides read and write access to elements in the array. This implementation does not perform bounds checking</p>
+// HTML-ARRAY-NEXT:         </div>
+// HTML-ARRAY-NEXT:       </div>
+// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">size</h3>
+// HTML-ARRAY-NEXT:       <p>public int size()</p>
+// HTML-ARRAY-NEXT:       <p>Defined at line 28 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
+// HTML-ARRAY-NEXT:       <div>
+// HTML-ARRAY-NEXT:         <div></div>
+// HTML-ARRAY-NEXT:         <div>
+// HTML-ARRAY-NEXT:           <p> Get the size of the array for Array<T, Size></p>
+// HTML-ARRAY-NEXT:         </div>
+// HTML-ARRAY-NEXT:       </div>
+// HTML-ARRAY-NEXT:     </div>
+// HTML-ARRAY-NEXT:   </div>
+// HTML-ARRAY-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-ARRAY-NEXT:     <ol>
+// HTML-ARRAY-NEXT:       <li>
+// HTML-ARRAY-NEXT:         <span>
+// HTML-ARRAY-NEXT:           <a href="#Members">Members</a>
+// HTML-ARRAY-NEXT:         </span>
+// HTML-ARRAY-NEXT:       </li>
+// HTML-ARRAY-NEXT:       <li>
+// HTML-ARRAY-NEXT:         <span>
+// HTML-ARRAY-NEXT:           <a href="#Functions">Functions</a>
+// HTML-ARRAY-NEXT:         </span>
+// HTML-ARRAY-NEXT:         <ul>
+// HTML-ARRAY-NEXT:           <li>
+// HTML-ARRAY-NEXT:             <span>
+// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">Array<T, Size></a>
+// HTML-ARRAY-NEXT:             </span>
+// HTML-ARRAY-NEXT:           </li>
+// HTML-ARRAY-NEXT:           <li>
+// HTML-ARRAY-NEXT:             <span>
+// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">operator[]</a>
+// HTML-ARRAY-NEXT:             </span>
+// HTML-ARRAY-NEXT:           </li>
+// HTML-ARRAY-NEXT:           <li>
+// HTML-ARRAY-NEXT:             <span>
+// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">size</a>
+// HTML-ARRAY-NEXT:             </span>
+// HTML-ARRAY-NEXT:           </li>
+// HTML-ARRAY-NEXT:         </ul>
+// HTML-ARRAY-NEXT:       </li>
+// HTML-ARRAY-NEXT:     </ol>
+// HTML-ARRAY-NEXT:   </div>
+// HTML-ARRAY-NEXT: </main>
+
+// HTML-GLOBAL-INDEX: <!DOCTYPE html>
+// HTML-GLOBAL-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-GLOBAL-INDEX-NEXT: <title>Global Namespace</title>
+// HTML-GLOBAL-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-GLOBAL-INDEX-NEXT: <header id="project-title"></header>
+// HTML-GLOBAL-INDEX-NEXT: <main>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-GLOBAL-INDEX-NEXT:     <h1>Global Namespace</h1>
+// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
+// HTML-GLOBAL-INDEX-NEXT:     <ul>
+// HTML-GLOBAL-INDEX-NEXT:       <li>@nonymous_namespace</li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>OuterNamespace</li>
+// HTML-GLOBAL-INDEX-NEXT:     </ul>
+// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-GLOBAL-INDEX-NEXT:     <ul>
+// HTML-GLOBAL-INDEX-NEXT:       <li>
+// HTML-GLOBAL-INDEX-NEXT:         <a href="Array.html">Array</a>
+// HTML-GLOBAL-INDEX-NEXT:       </li>
+// HTML-GLOBAL-INDEX-NEXT:     </ul>
+// HTML-GLOBAL-INDEX-NEXT:   </div>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-GLOBAL-INDEX-NEXT:     <ol>
+// HTML-GLOBAL-INDEX-NEXT:       <li>
+// HTML-GLOBAL-INDEX-NEXT:         <span>
+// HTML-GLOBAL-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
+// HTML-GLOBAL-INDEX-NEXT:         </span>
+// HTML-GLOBAL-INDEX-NEXT:       </li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>
+// HTML-GLOBAL-INDEX-NEXT:         <span>
+// HTML-GLOBAL-INDEX-NEXT:           <a href="#Records">Records</a>
+// HTML-GLOBAL-INDEX-NEXT:         </span>
+// HTML-GLOBAL-INDEX-NEXT:       </li>
+// HTML-GLOBAL-INDEX-NEXT:     </ol>
+// HTML-GLOBAL-INDEX-NEXT:   </div>
+// HTML-GLOBAL-INDEX-NEXT: </main>
+
+// HTML-CIRCLE: <!DOCTYPE html>
+// HTML-CIRCLE-NEXT: <meta charset="utf-8"/>
+// HTML-CIRCLE-NEXT: <title>class Circle</title>
+// HTML-CIRCLE-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
+// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
+// HTML-CIRCLE-NEXT: <header id="project-title"></header>
+// HTML-CIRCLE-NEXT: <main>
+// HTML-CIRCLE-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-CIRCLE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-CIRCLE-NEXT:     <h1>class Circle</h1>
+// HTML-CIRCLE-NEXT:     <p>Defined at line 11 of file .{{[\/]}}include{{[\/]}}Circle.h</p>
+// HTML-CIRCLE-NEXT:     <div>
+// HTML-CIRCLE-NEXT:       <div></div>
+// HTML-CIRCLE-NEXT:     </div>
+// HTML-CIRCLE-NEXT:     <p>
+// HTML-CIRCLE-NEXT:       Inherits from
+// HTML-CIRCLE-NEXT:       <a href="Shape.html">Shape</a>
+// HTML-CIRCLE-NEXT:     </p>
+// HTML-CIRCLE-NEXT:     <h2 id="Members">Members</h2>
+// HTML-CIRCLE-NEXT:     <ul>
+// HTML-CIRCLE-NEXT:       <li>private double m_radius</li>
+// HTML-CIRCLE-NEXT:     </ul>
+// HTML-CIRCLE-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-CIRCLE-NEXT:     <div>
+// HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Circle</h3>
+// HTML-CIRCLE-NEXT:       <p>public void Circle(int id, double radius)</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <div>
+// HTML-CIRCLE-NEXT:         <div></div>
+// HTML-CIRCLE-NEXT:         <div>
+// HTML-CIRCLE-NEXT:           <p> Initializes a Circle object with a given ID and radius.</p>
+// HTML-CIRCLE-NEXT:         </div>
+// HTML-CIRCLE-NEXT:       </div>
+// HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">draw</h3>
+// HTML-CIRCLE-NEXT:       <p>public void draw()</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 19 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <div>
+// HTML-CIRCLE-NEXT:         <div>
+// HTML-CIRCLE-NEXT:           <p> Draws the circle (in this case, prints circle information)</p>
+// HTML-CIRCLE-NEXT:         </div>
+// HTML-CIRCLE-NEXT:         <div>
+// HTML-CIRCLE-NEXT:           <p> 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.</p>
+// HTML-CIRCLE-NEXT:         </div>
+// HTML-CIRCLE-NEXT:       </div>
+// HTML-CIRCLE-NEXT:     </div>
+// HTML-CIRCLE-NEXT:   </div>
+// HTML-CIRCLE-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-CIRCLE-NEXT:     <ol>
+// HTML-CIRCLE-NEXT:       <li>
+// HTML-CIRCLE-NEXT:         <span>
+// HTML-CIRCLE-NEXT:           <a href="#Members">Members</a>
+// HTML-CIRCLE-NEXT:         </span>
+// HTML-CIRCLE-NEXT:       </li>
+// HTML-CIRCLE-NEXT:       <li>
+// HTML-CIRCLE-NEXT:         <span>
+// HTML-CIRCLE-NEXT:           <a href="#Functions">Functions</a>
+// HTML-CIRCLE-NEXT:         </span>
+// HTML-CIRCLE-NEXT:         <ul>
+// HTML-CIRCLE-NEXT:           <li>
+// HTML-CIRCLE-NEXT:             <span>
+// HTML-CIRCLE-NEXT:               <a href="#{{([0-9A-F]{40})}}">Circle</a>
+// HTML-CIRCLE-NEXT:             </span>
+// HTML-CIRCLE-NEXT:           </li>
+// HTML-CIRCLE-NEXT:           <li>
+// HTML-CIRCLE-NEXT:             <span>
+// HTML-CIRCLE-NEXT:               <a href="#{{([0-9A-F]{40})}}">draw</a>
+// HTML-CIRCLE-NEXT:             </span>
+// HTML-CIRCLE-NEXT:           </li>
+// HTML-CIRCLE-NEXT:         </ul>
+// HTML-CIRCLE-NEXT:       </li>
+// HTML-CIRCLE-NEXT:     </ol>
+// HTML-CIRCLE-NEXT:   </div>
+// HTML-CIRCLE-NEXT: </main>
+
+// HTML-INNER-INDEX: <!DOCTYPE html>
+// HTML-INNER-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-INNER-INDEX-NEXT: <title>namespace InnerNamespace</title>
+// HTML-INNER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-INNER-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
+// HTML-INNER-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
+// HTML-INNER-INDEX-NEXT: <header id="project-title"></header>
+// HTML-INNER-INDEX-NEXT: <main>
+// HTML-INNER-INDEX-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-INNER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-INNER-INDEX-NEXT:     <h1>namespace InnerNamespace</h1>
+// HTML-INNER-INDEX-NEXT:     <div>
+// HTML-INNER-INDEX-NEXT:       <div>
+// HTML-INNER-INDEX-NEXT:         <p> Inner namespace</p>
+// HTML-INNER-INDEX-NEXT:       </div>
+// HTML-INNER-INDEX-NEXT:     </div>
+// HTML-INNER-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-INNER-INDEX-NEXT:     <ul>
+// HTML-INNER-INDEX-NEXT:       <li>
+// HTML-INNER-INDEX-NEXT:         <a href="Shape.html">Shape</a>
+// HTML-INNER-INDEX-NEXT:       </li>
+// HTML-INNER-INDEX-NEXT:       <li>
+// HTML-INNER-INDEX-NEXT:         <a href="Circle.html">Circle</a>
+// HTML-INNER-INDEX-NEXT:       </li>
+// HTML-INNER-INDEX-NEXT:     </ul>
+// HTML-INNER-INDEX-NEXT:     <h2 id="Enums">Enums</h2>
+// HTML-INNER-INDEX-NEXT:     <div>
+// HTML-INNER-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">enum class Color</h3>
+// HTML-INNER-INDEX-NEXT:       <ul>
+// HTML-INNER-INDEX-NEXT:         <li>Red</li>
+// HTML-INNER-INDEX-NEXT:         <li>Green</li>
+// HTML-INNER-INDEX-NEXT:         <li>Blue</li>
+// HTML-INNER-INDEX-NEXT:       </ul>
+// HTML-INNER-INDEX-NEXT:       <p>Defined at line 10 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
+// HTML-INNER-INDEX-NEXT:       <div>
+// HTML-INNER-INDEX-NEXT:         <div></div>
+// HTML-INNER-INDEX-NEXT:       </div>
+// HTML-INNER-INDEX-NEXT:     </div>
+// HTML-INNER-INDEX-NEXT:   </div>
+// HTML-INNER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-INNER-INDEX-NEXT:     <ol>
+// HTML-INNER-INDEX-NEXT:       <li>
+// HTML-INNER-INDEX-NEXT:         <span>
+// HTML-INNER-INDEX-NEXT:           <a href="#Records">Records</a>
+// HTML-INNER-INDEX-NEXT:         </span>
+// HTML-INNER-INDEX-NEXT:       </li>
+// HTML-INNER-INDEX-NEXT:       <li>
+// HTML-INNER-INDEX-NEXT:         <span>
+// HTML-INNER-INDEX-NEXT:           <a href="#Enums">Enums</a>
+// HTML-INNER-INDEX-NEXT:         </span>
+// HTML-INNER-INDEX-NEXT:         <ul>
+// HTML-INNER-INDEX-NEXT:           <li>
+// HTML-INNER-INDEX-NEXT:             <span>
+// HTML-INNER-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">Color</a>
+// HTML-INNER-INDEX-NEXT:             </span>
+// HTML-INNER-INDEX-NEXT:           </li>
+// HTML-INNER-INDEX-NEXT:         </ul>
+// HTML-INNER-INDEX-NEXT:       </li>
+// HTML-INNER-INDEX-NEXT:     </ol>
+// HTML-INNER-INDEX-NEXT:   </div>
+// HTML-INNER-INDEX-NEXT: </main>
+
+// HTML-SHAPE: <!DOCTYPE html>
+// HTML-SHAPE-NEXT: <meta charset="utf-8"/>
+// HTML-SHAPE-NEXT: <title>class Shape</title>
+// HTML-SHAPE-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-SHAPE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
+// HTML-SHAPE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
+// HTML-SHAPE-NEXT: <header id="project-title"></header>
+// HTML-SHAPE-NEXT: <main>
+// HTML-SHAPE-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-SHAPE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-SHAPE-NEXT:     <h1>class Shape</h1>
+// HTML-SHAPE-NEXT:     <p>Defined at line 19 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
+// HTML-SHAPE-NEXT:     <div>
+// HTML-SHAPE-NEXT:       <div></div>
+// HTML-SHAPE-NEXT:     </div>
+// HTML-SHAPE-NEXT:     <h2 id="Members">Members</h2>
+// HTML-SHAPE-NEXT:     <ul>
+// HTML-SHAPE-NEXT:       <li>private int m_id</li>
+// HTML-SHAPE-NEXT:     </ul>
+// HTML-SHAPE-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-SHAPE-NEXT:     <div>
+// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Shape</h3>
+// HTML-SHAPE-NEXT:       <p>public void Shape(int id)</p>
+// HTML-SHAPE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
+// HTML-SHAPE-NEXT:       <div>
+// HTML-SHAPE-NEXT:         <div></div>
+// HTML-SHAPE-NEXT:         <div>
+// HTML-SHAPE-NEXT:           <p> Initializes a Shape object with a given ID.</p>
+// HTML-SHAPE-NEXT:         </div>
+// HTML-SHAPE-NEXT:       </div>
+// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">~Shape</h3>
+// HTML-SHAPE-NEXT:       <p>public void ~Shape()</p>
+// HTML-SHAPE-NEXT:       <p>Defined at line 16 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
+// HTML-SHAPE-NEXT:       <div>
+// HTML-SHAPE-NEXT:         <div></div>
+// HTML-SHAPE-NEXT:         <div>
+// HTML-SHAPE-NEXT:           <p> Ensures proper cleanup of derived classes.</p>
+// HTML-SHAPE-NEXT:         </div>
+// HTML-SHAPE-NEXT:       </div>
+// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">draw</h3>
+// HTML-SHAPE-NEXT:       <p>public void draw()</p>
+// HTML-SHAPE-NEXT:       <div>
+// HTML-SHAPE-NEXT:         <div></div>
+// HTML-SHAPE-NEXT:       </div>
+// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">getId</h3>
+// HTML-SHAPE-NEXT:       <p>public int getId()</p>
+// HTML-SHAPE-NEXT:       <p>Defined at line 23 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
+// HTML-SHAPE-NEXT:       <div>
+// HTML-SHAPE-NEXT:         <div></div>
+// HTML-SHAPE-NEXT:         <div>
+// HTML-SHAPE-NEXT:           <p> Get unique identifier of the shape</p>
+// HTML-SHAPE-NEXT:         </div>
+// HTML-SHAPE-NEXT:       </div>
+// HTML-SHAPE-NEXT:     </div>
+// HTML-SHAPE-NEXT:   </div>
+// HTML-SHAPE-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-SHAPE-NEXT:     <ol>
+// HTML-SHAPE-NEXT:       <li>
+// HTML-SHAPE-NEXT:         <span>
+// HTML-SHAPE-NEXT:           <a href="#Members">Members</a>
+// HTML-SHAPE-NEXT:         </span>
+// HTML-SHAPE-NEXT:       </li>
+// HTML-SHAPE-NEXT:       <li>
+// HTML-SHAPE-NEXT:         <span>
+// HTML-SHAPE-NEXT:           <a href="#Functions">Functions</a>
+// HTML-SHAPE-NEXT:         </span>
+// HTML-SHAPE-NEXT:         <ul>
+// HTML-SHAPE-NEXT:           <li>
+// HTML-SHAPE-NEXT:             <span>
+// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">Shape</a>
+// HTML-SHAPE-NEXT:             </span>
+// HTML-SHAPE-NEXT:           </li>
+// HTML-SHAPE-NEXT:           <li>
+// HTML-SHAPE-NEXT:             <span>
+// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">~Shape</a>
+// HTML-SHAPE-NEXT:             </span>
+// HTML-SHAPE-NEXT:           </li>
+// HTML-SHAPE-NEXT:           <li>
+// HTML-SHAPE-NEXT:             <span>
+// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">draw</a>
+// HTML-SHAPE-NEXT:             </span>
+// HTML-SHAPE-NEXT:           </li>
+// HTML-SHAPE-NEXT:           <li>
+// HTML-SHAPE-NEXT:             <span>
+// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">getId</a>
+// HTML-SHAPE-NEXT:             </span>
+// HTML-SHAPE-NEXT:           </li>
+// HTML-SHAPE-NEXT:         </ul>
+// HTML-SHAPE-NEXT:       </li>
+// HTML-SHAPE-NEXT:     </ol>
+// HTML-SHAPE-NEXT:   </div>
+// HTML-SHAPE-NEXT: </main>
+
+// HTML-OUTER-INDEX: <!DOCTYPE html>
+// HTML-OUTER-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-OUTER-INDEX-NEXT: <title>namespace OuterNamespace</title>
+// HTML-OUTER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-OUTER-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-OUTER-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-OUTER-INDEX-NEXT: <header id="project-title"></header>
+// HTML-OUTER-INDEX-NEXT: <main>
+// HTML-OUTER-INDEX-NEXT:   <div id="sidebar-left" path="OuterNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-OUTER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-OUTER-INDEX-NEXT:     <h1>namespace OuterNamespace</h1>
+// HTML-OUTER-INDEX-NEXT:     <div>
+// HTML-OUTER-INDEX-NEXT:       <div>
+// HTML-OUTER-INDEX-NEXT:         <p> Outer namespace</p>
+// HTML-OUTER-INDEX-NEXT:       </div>
+// HTML-OUTER-INDEX-NEXT:     </div>
+// HTML-OUTER-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
+// HTML-OUTER-INDEX-NEXT:     <ul>
+// HTML-OUTER-INDEX-NEXT:       <li>
+// HTML-OUTER-INDEX-NEXT:         <a href="InnerNamespace{{[\/]}}index.html">InnerNamespace</a>
+// HTML-OUTER-INDEX-NEXT:       </li>
+// HTML-OUTER-INDEX-NEXT:     </ul>
+// HTML-OUTER-INDEX-NEXT:   </div>
+// HTML-OUTER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-OUTER-INDEX-NEXT:     <ol>
+// HTML-OUTER-INDEX-NEXT:       <li>
+// HTML-OUTER-INDEX-NEXT:         <span>
+// HTML-OUTER-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
+// HTML-OUTER-INDEX-NEXT:         </span>
+// HTML-OUTER-INDEX-NEXT:       </li>
+// HTML-OUTER-INDEX-NEXT:     </ol>
+// HTML-OUTER-INDEX-NEXT:   </div>
+// HTML-OUTER-INDEX-NEXT: </main>
+
+// MD-ANON-INDEX: # namespace @nonymous_namespace
+// MD-ANON-INDEX:  Anonymous namespace for utility functions
+// MD-ANON-INDEX: ## Functions
+// MD-ANON-INDEX: ### getRandomNumber
+// MD-ANON-INDEX: *int getRandomNumber()*
+// MD-ANON-INDEX: *Defined at .{{[\/]}}src{{[\/]}}Utils.cpp#9*
+// MD-ANON-INDEX: **brief** Generate a "random" number
+// MD-ANON-INDEX: **note** This is not actually random in this implementation
+// MD-ANON-INDEX: **return** int A predetermined "random" number
+// MD-ANON-INDEX:  This function returns a predetermined number to simulate randomness. In a real implementation, this would use a proper random number generator
+// MD-ANON-INDEX: ### intToString
+// MD-ANON-INDEX: *void intToString(int value, char * buffer, int & index)*
+// MD-ANON-INDEX: *Defined at .{{[\/]}}src{{[\/]}}Utils.cpp#18*
+// MD-ANON-INDEX: **brief** Helper function to convert int to string
+// MD-ANON-INDEX: **value** The integer value to convert
+// MD-ANON-INDEX: **buffer** The char buffer to store the result
+// MD-ANON-INDEX: **index** Reference to the current index in the buffer
+// MD-ANON-INDEX:  Converts an integer value to its string representation and stores the result in the provided buffer.
+// MD-ANON-INDEX: ### doubleToString
+// MD-ANON-INDEX: *void doubleToString(double value, char * buffer, int & index)*
+// MD-ANON-INDEX: *Defined at .{{[\/]}}src{{[\/]}}Utils.cpp#26*
+// MD-ANON-INDEX: **brief** Helper function to convert double to string (simplified)
+// MD-ANON-INDEX: **value** The double value to convert
+// MD-ANON-INDEX: **buffer** The char buffer to store the result
+// MD-ANON-INDEX: **index** Reference to the current index in the buffer
+// MD-ANON-INDEX:  Converts a double value to its string representation with two decimal places and stores the result in the provided buffer.
+// MD-ANON-INDEX: ### print
+// MD-ANON-INDEX: *void print(const char * str)*
+// MD-ANON-INDEX: *Defined at .{{[\/]}}src{{[\/]}}Utils.cpp#33*
+// MD-ANON-INDEX: **brief** Helper function to print a string
+// MD-ANON-INDEX: **str** The null-terminated string to print
+// MD-ANON-INDEX:  Prints the provided null-terminated string to the standard output.
+
+// MD-ARRAY: # class Array
+// MD-ARRAY: *Defined at .{{[\/]}}include{{[\/]}}Array.h#13*
+// MD-ARRAY: **brief** Template class for a simple array
+// MD-ARRAY: **T** The type of elements in the array
+// MD-ARRAY: **Size** The fixed size of the array
+// MD-ARRAY: ## Members
+// MD-ARRAY: private T[Size] m_data
+// MD-ARRAY: ## Functions
+// MD-ARRAY: ### Array<T, Size>
+// MD-ARRAY: *public void Array<T, Size>()*
+// MD-ARRAY: *Defined at .{{[\/]}}src{{[\/]}}Array.cpp#8*
+// MD-ARRAY: **brief** Default constructor
+// MD-ARRAY:  Initializes all elements of the array to their default value.
+// MD-ARRAY: ### operator[]
+// MD-ARRAY: *public T & operator[](int index)*
+// MD-ARRAY: *Defined at .{{[\/]}}src{{[\/]}}Array.cpp#18*
+// MD-ARRAY: **brief** Array access operator
+// MD-ARRAY: **index** The index of the element to access
+// MD-ARRAY: **return** T& Reference to the element at the given index
+// MD-ARRAY:  Array access operator for Array<T, Size> Provides read and write access to elements in the array. This implementation does not perform bounds checking
+// MD-ARRAY: ### size
+// MD-ARRAY: *public int size()*
+// MD-ARRAY: *Defined at .{{[\/]}}src{{[\/]}}Array.cpp#28*
+// MD-ARRAY: **brief** Get the size of the array
+// MD-ARRAY: **return** int The size of the array
+// MD-ARRAY:  Get the size of the array for Array<T, Size>
+
+// MD-GLOBAL-INDEX: # Global Namespace
+// MD-GLOBAL-INDEX: ## Namespaces
+// MD-GLOBAL-INDEX: * [OuterNamespace](..{{[\/]}}OuterNamespace{{[\/]}}index.md)
+// MD-GLOBAL-INDEX: * [@nonymous_namespace](..{{[\/]}}@nonymous_namespace{{[\/]}}index.md)
+// MD-GLOBAL-INDEX: ## Records
+// MD-GLOBAL-INDEX: * [Array](Array.md)
+
+// MD-CIRCLE: # class Circle
+// MD-CIRCLE: *Defined at .{{[\/]}}include{{[\/]}}Circle.h#11*
+// MD-CIRCLE: **brief** Circle class, derived from Shape
+// MD-CIRCLE: Inherits from Shape
+// MD-CIRCLE: ## Members
+// MD-CIRCLE: private double m_radius
+// MD-CIRCLE: ## Functions
+// MD-CIRCLE: ### Circle
+// MD-CIRCLE: *public void Circle(int id, double radius)*
+// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#9*
+// MD-CIRCLE: **brief** Constructor
+// MD-CIRCLE: **id** The unique identifier for the circle
+// MD-CIRCLE: **radius** The radius of the circle
+// MD-CIRCLE:  Initializes a Circle object with a given ID and radius.
+// MD-CIRCLE: ### draw
+// MD-CIRCLE: *public void draw()*
+// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#19*
+// MD-CIRCLE: **brief** Implementation of the draw function
+// MD-CIRCLE:  Draws the circle (in this case, prints circle information)
+// MD-CIRCLE:  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.
+
+// MD-INNER: # namespace InnerNamespace
+// MD-INNER:  Inner namespace
+// MD-INNER: ## Records
+// MD-INNER: * [Shape](Shape.md)
+// MD-INNER: * [Circle](Circle.md)
+// MD-INNER: ## Enums
+// MD-INNER: | enum class Color |
+// MD-INNER: --
+// MD-INNER: | Red |
+// MD-INNER: | Green |
+// MD-INNER: | Blue |
+// MD-INNER: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#10*
+// MD-INNER: **brief** Enum class for colors
+
+// MD-SHAPE: # class Shape
+// MD-SHAPE: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#19*
+// MD-SHAPE: **brief** Abstract base class for shapes
+// MD-SHAPE: ## Members
+// MD-SHAPE: private int m_id
+// MD-SHAPE: ## Functions
+// MD-SHAPE: ### Shape
+// MD-SHAPE: *public void Shape(int id)*
+// MD-SHAPE: *Defined at .{{[\/]}}src{{[\/]}}Shape.cpp#9*
+// MD-SHAPE: **brief** Constructor
+// MD-SHAPE: **id** The unique identifier for the shape
+// MD-SHAPE:  Initializes a Shape object with a given ID.
+// MD-SHAPE: ### ~Shape
+// MD-SHAPE: *public void ~Shape()*
+// MD-SHAPE: *Defined at .{{[\/]}}src{{[\/]}}Shape.cpp#16*
+// MD-SHAPE: **brief** Virtual destructor
+// MD-SHAPE:  Ensures proper cleanup of derived classes.
+// MD-SHAPE: ### draw
+// MD-SHAPE: *public void draw()*
+// MD-SHAPE: **brief** Pure virtual function for drawing the shape
+// MD-SHAPE: ### getId
+// MD-SHAPE: *public int getId()*
+// MD-SHAPE: *Defined at .{{[\/]}}src{{[\/]}}Shape.cpp#23*
+// MD-SHAPE: **brief** Getter for the shape's ID
+// MD-SHAPE: **return** int The shape's ID
+// MD-SHAPE:  Get unique identifier of the shape
+
+// MD-OUTER-INDEX: # namespace OuterNamespace
+// MD-OUTER-INDEX:  Outer namespace
+// MD-OUTER-INDEX: ## Namespaces
+// MD-OUTER-INDEX: * [InnerNamespace](InnerNamespace{{[\/]}}index.md)
+
+// MD-ALL-FILES: # All Files
+// MD-ALL-FILES: ## [@nonymous_namespace](@nonymous_namespace{{[\/]}}index.md)
+// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
+// MD-ALL-FILES: ## [OuterNamespace](OuterNamespace{{[\/]}}index.md)
+
+// MD-INDEX: #  C/C++ Reference
+// MD-INDEX: * Namespace: [GlobalNamespace](GlobalNamespace)
+// MD-INDEX: * Namespace: [OuterNamespace](OuterNamespace)
+
+// MD-ALL-FILES: # All Files
+// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace/index.md)
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/basic-project.test b/clang-tools-extra/test/clang-doc/basic-project.test
index bab5f8e1761bc..92f08e83fb88f 100644
--- a/clang-tools-extra/test/clang-doc/basic-project.test
+++ b/clang-tools-extra/test/clang-doc/basic-project.test
@@ -7,6 +7,14 @@
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.html -check-prefix=HTML-RECTANGLE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.html -check-prefix=HTML-CIRCLE
 
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Calculator.md -check-prefix=MD-CALC
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.md -check-prefix=MD-CIRCLE
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.md -check-prefix=MD-RECTANGLE
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Shape.md -check-prefix=MD-SHAPE
+// 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})}}",
@@ -57,15 +65,15 @@
 // HTML-SHAPE: <!DOCTYPE html>
 // HTML-SHAPE-NEXT: <meta charset="utf-8"/>
 // HTML-SHAPE-NEXT: <title>class Shape</title>
-// HTML-SHAPE-NEXT: <link rel="stylesheet" href="../clang-doc-default-stylesheet.css"/>
-// HTML-SHAPE-NEXT: <script src="{{.*}}index_json.js"></script>
-// HTML-SHAPE-NEXT: <script src="{{.*}}index.js"></script>
+// HTML-SHAPE-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-SHAPE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-SHAPE-NEXT: <script src="..{{[\/]}}index.js"></script>
 // HTML-SHAPE-NEXT: <header id="project-title"></header>
 // HTML-SHAPE-NEXT: <main>
 // HTML-SHAPE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-SHAPE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-SHAPE-NEXT:     <h1>class Shape</h1>
-// HTML-SHAPE-NEXT:     <p>Defined at line 8 of file {{.*}}Shape.h</p>
+// HTML-SHAPE-NEXT:     <p>Defined at line 8 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
 // HTML-SHAPE-NEXT:     <div>
 // HTML-SHAPE-NEXT:       <div>
 // HTML-SHAPE-NEXT:         <p> Provides a common interface for different types of shapes.</p>
@@ -75,7 +83,7 @@
 // HTML-SHAPE-NEXT:     <div>
 // HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">~Shape</h3>
 // HTML-SHAPE-NEXT:       <p>public void ~Shape()</p>
-// HTML-SHAPE-NEXT:       <p>Defined at line 13 of file {{.*}}Shape.h</p>
+// HTML-SHAPE-NEXT:       <p>Defined at line 13 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
 // HTML-SHAPE-NEXT:       <div>
 // HTML-SHAPE-NEXT:         <div></div>
 // HTML-SHAPE-NEXT:       </div>
@@ -122,9 +130,9 @@
 // HTML-CALC: <!DOCTYPE html>
 // HTML-CALC-NEXT: <meta charset="utf-8"/>
 // HTML-CALC-NEXT: <title>class Calculator</title>
-// HTML-CALC-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
-// HTML-CALC-NEXT: <script src="{{.*}}index_json.js"></script>
-// HTML-CALC-NEXT: <script src="{{.*}}index.js"></script>
+// HTML-CALC-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-CALC-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-CALC-NEXT: <script src="..{{[\/]}}index.js"></script>
 // HTML-CALC-NEXT: <header id="project-title"></header>
 // HTML-CALC-NEXT: <main>
 // HTML-CALC-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
@@ -140,25 +148,25 @@
 // HTML-CALC-NEXT:     <div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">add</h3>
 // HTML-CALC-NEXT:       <p>public int add(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 3 of file {{.*}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 3 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">subtract</h3>
 // HTML-CALC-NEXT:       <p>public int subtract(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 7 of file {{.*}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 7 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">multiply</h3>
 // HTML-CALC-NEXT:       <p>public int multiply(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 11 of file {{.*}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 11 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">divide</h3>
 // HTML-CALC-NEXT:       <p>public double divide(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 15 of file {{.*}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 15 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
@@ -201,8 +209,8 @@
 // HTML-RECTANGLE-NEXT: <meta charset="utf-8"/>
 // HTML-RECTANGLE-NEXT: <title>class Rectangle</title>
 // HTML-RECTANGLE-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
-// HTML-RECTANGLE-NEXT: <script src="{{.*}}index_json.js"></script>
-// HTML-RECTANGLE-NEXT: <script src="{{.*}}index.js"></script>
+// HTML-RECTANGLE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-RECTANGLE-NEXT: <script src="..{{[\/]}}index.js"></script>
 // HTML-RECTANGLE-NEXT: <header id="project-title"></header>
 // HTML-RECTANGLE-NEXT: <main>
 // HTML-RECTANGLE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
@@ -282,14 +290,14 @@
 // HTML-CIRCLE-NEXT: <meta charset="utf-8"/>
 // HTML-CIRCLE-NEXT: <title>class Circle</title>
 // HTML-CIRCLE-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
-// HTML-CIRCLE-NEXT: <script src="{{.*}}index_json.js"></script>
-// HTML-CIRCLE-NEXT: <script src="{{.*}}index.js"></script>
+// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}index.js"></script>
 // HTML-CIRCLE-NEXT: <header id="project-title"></header>
 // HTML-CIRCLE-NEXT: <main>
 // HTML-CIRCLE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-CIRCLE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-CIRCLE-NEXT:     <h1>class Circle</h1>
-// HTML-CIRCLE-NEXT:     <p>Defined at line 10 of file {{.*}}Circle.h</p>
+// HTML-CIRCLE-NEXT:     <p>Defined at line 10 of file .{{[\/]}}include{{[\/]}}Circle.h</p>
 // HTML-CIRCLE-NEXT:     <div>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <p> Represents a circle with a given radius.</p>
@@ -307,19 +315,19 @@
 // HTML-CIRCLE-NEXT:     <div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Circle</h3>
 // HTML-CIRCLE-NEXT:       <p>public void Circle(double radius)</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 3 of file {{.*}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 3 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">area</h3>
 // HTML-CIRCLE-NEXT:       <p>public double area()</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 5 of file {{.*}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 5 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">perimeter</h3>
 // HTML-CIRCLE-NEXT:       <p>public double perimeter()</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file {{.*}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
@@ -356,4 +364,118 @@
 // HTML-CIRCLE-NEXT:       </li>
 // HTML-CIRCLE-NEXT:     </ol>
 // HTML-CIRCLE-NEXT:   </div>
-// HTML-CIRCLE-NEXT: </main>
\ No newline at end of file
+// HTML-CIRCLE-NEXT: </main>
+
+// MD-CALC: # class Calculator
+// MD-CALC: *Defined at ./include\Calculator.h#8*
+// MD-CALC: **brief** A simple calculator class.
+// MD-CALC:  Provides basic arithmetic operations.
+// MD-CALC: ## Functions
+// MD-CALC: ### add
+// MD-CALC: *public int add(int a, int b)*
+// MD-CALC: *Defined at ./src/Calculator.cpp#3*
+// MD-CALC: **brief** Adds two integers.
+// MD-CALC: **a** First integer.
+// MD-CALC: **b** Second integer.
+// MD-CALC: **return** int The sum of a and b.
+// MD-CALC: ### subtract
+// MD-CALC: *public int subtract(int a, int b)*
+// MD-CALC: *Defined at ./src/Calculator.cpp#7*
+// MD-CALC: **brief** Subtracts the second integer from the first.
+// MD-CALC: **a** First integer.
+// MD-CALC: **b** Second integer.
+// MD-CALC: **return** int The result of a - b.
+// MD-CALC: ### multiply
+// MD-CALC: *public int multiply(int a, int b)*
+// MD-CALC: *Defined at ./src/Calculator.cpp#11*
+// MD-CALC: **brief** Multiplies two integers.
+// MD-CALC: **a** First integer.
+// MD-CALC: **b** Second integer.
+// MD-CALC: **return** int The product of a and b.
+// MD-CALC: ### divide
+// MD-CALC: *public double divide(int a, int b)*
+// MD-CALC: *Defined at ./src/Calculator.cpp#15*
+// MD-CALC: **brief** Divides the first integer by the second.
+// MD-CALC: **a** First integer.
+// MD-CALC: **b** Second integer.
+// MD-CALC: **return** double The result of a / b.
+// MD-CALC: **throw**if b is zero.
+
+// MD-CIRCLE: # class Circle
+// MD-CIRCLE: *Defined at ./include\Circle.h#10*
+// MD-CIRCLE: **brief** Circle class derived from Shape.
+// MD-CIRCLE:  Represents a circle with a given radius.
+// MD-CIRCLE: Inherits from Shape
+// MD-CIRCLE: ## Members
+// MD-CIRCLE: private double radius_
+// MD-CIRCLE: ## Functions
+// MD-CIRCLE: ### Circle
+// MD-CIRCLE: *public void Circle(double radius)*
+// MD-CIRCLE: *Defined at ./src/Circle.cpp#3*
+// MD-CIRCLE: **brief** Constructs a new Circle object.
+// MD-CIRCLE: **radius** Radius of the circle.
+// MD-CIRCLE: ### area
+// MD-CIRCLE: *public double area()*
+// MD-CIRCLE: *Defined at ./src/Circle.cpp#5*
+// MD-CIRCLE: **brief** Calculates the area of the circle.
+// MD-CIRCLE: **return** double The area of the circle.
+// MD-CIRCLE: ### perimeter
+// MD-CIRCLE: *public double perimeter()*
+// MD-CIRCLE: *Defined at ./src/Circle.cpp#9*
+// MD-CIRCLE: **brief** Calculates the perimeter of the circle.
+// MD-CIRCLE: **return** double The perimeter of the circle.
+
+// MD-INDEX: # Global Namespace
+// MD-INDEX: ## Records
+// MD-INDEX: * [Calculator](Calculator.md)
+// MD-INDEX: * [Shape](Shape.md)
+// MD-INDEX: * [Circle](Circle.md)
+// MD-INDEX: * [Rectangle](Rectangle.md)
+
+// MD-RECTANGLE: # class Rectangle
+// MD-RECTANGLE: *Defined at ./include\Rectangle.h#10*
+// MD-RECTANGLE: **brief** Rectangle class derived from Shape.
+// MD-RECTANGLE:  Represents a rectangle with a given width and height.
+// MD-RECTANGLE: Inherits from Shape
+// MD-RECTANGLE: ## Members
+// MD-RECTANGLE: private double width_
+// MD-RECTANGLE: private double height_
+// MD-RECTANGLE: ## Functions
+// MD-RECTANGLE: ### Rectangle
+// MD-RECTANGLE: *public void Rectangle(double width, double height)*
+// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#3*
+// MD-RECTANGLE: **brief** Constructs a new Rectangle object.
+// MD-RECTANGLE: **width** Width of the rectangle.
+// MD-RECTANGLE: **height** Height of the rectangle.
+// MD-RECTANGLE: ### area
+// MD-RECTANGLE: *public double area()*
+// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#6*
+// MD-RECTANGLE: **brief** Calculates the area of the rectangle.
+// MD-RECTANGLE: **return** double The area of the rectangle.
+// MD-RECTANGLE: ### perimeter
+// MD-RECTANGLE: *public double perimeter()*
+// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#10*
+// MD-RECTANGLE: **brief** Calculates the perimeter of the rectangle.
+// MD-RECTANGLE: **return** double The perimeter of the rectangle.
+
+// MD-SHAPE: # class Shape
+// MD-SHAPE: *Defined at ./include\Shape.h#8*
+// MD-SHAPE: **brief** Abstract base class for shapes.
+// MD-SHAPE:  Provides a common interface for different types of shapes.
+// MD-SHAPE: ## Functions
+// MD-SHAPE: ### ~Shape
+// MD-SHAPE: *public void ~Shape()*
+// MD-SHAPE: *Defined at ./include\Shape.h#13*
+// MD-SHAPE: **brief** Virtual destructor.
+// MD-SHAPE: ### area
+// MD-SHAPE: *public double area()*
+// MD-SHAPE: **brief** Calculates the area of the shape.
+// MD-SHAPE: **return** double The area of the shape.
+// MD-SHAPE: ### perimeter
+// MD-SHAPE: *public double perimeter()*
+// MD-SHAPE: **brief** Calculates the perimeter of the shape.
+// MD-SHAPE: **return** double The perimeter of the shape.
+
+// MD-ALL-FILES: # All Files
+// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace/index.md)
+
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp b/clang-tools-extra/test/clang-doc/enum.cpp
new file mode 100644
index 0000000000000..d3a79d590937b
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -0,0 +1,68 @@
+// RUN: rm -rf %t && mkdir -p %t/docs %t/build
+// RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
+// RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-INDEX
+// RUN: rm -rf %t
+
+/**
+ * @brief For specifying RGB colors
+ */
+enum Color {
+  Red, // Red enums
+  Green, // Green enums
+  Blue // Blue enums
+};
+
+// HTML-INDEX: <!DOCTYPE html>
+// HTML-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-INDEX-NEXT: <title>Global Namespace</title>
+// HTML-INDEX-NEXT: <link rel="stylesheet" href="../clang-doc-default-stylesheet.css"/>
+// HTML-INDEX-NEXT: <script src="../index_json.js"></script>
+// HTML-INDEX-NEXT: <script src="../index.js"></script>
+// HTML-INDEX-NEXT: <header id="project-title"></header>
+// HTML-INDEX-NEXT: <main>
+// HTML-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-INDEX-NEXT:     <h1>Global Namespace</h1>
+// HTML-INDEX-NEXT:     <h2 id="Enums">Enums</h2>
+// HTML-INDEX-NEXT:     <div>
+// HTML-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">enum Color</h3>
+// HTML-INDEX-NEXT:       <ul>
+// HTML-INDEX-NEXT:         <li>Red</li>
+// HTML-INDEX-NEXT:         <li>Green</li>
+// HTML-INDEX-NEXT:         <li>Blue</li>
+// HTML-INDEX-NEXT:       </ul>
+// HTML-INDEX-NEXT:       <p>Defined at line 9 of file clang-tools-extra\test\clang-doc\enum.cpp</p>
+// HTML-INDEX-NEXT:       <div>
+// HTML-INDEX-NEXT:         <div></div>
+// HTML-INDEX-NEXT:       </div>
+// HTML-INDEX-NEXT:     </div>
+// HTML-INDEX-NEXT:   </div>
+// HTML-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-INDEX-NEXT:     <ol>
+// HTML-INDEX-NEXT:       <li>
+// HTML-INDEX-NEXT:         <span>
+// HTML-INDEX-NEXT:           <a href="#Enums">Enums</a>
+// HTML-INDEX-NEXT:         </span>
+// HTML-INDEX-NEXT:         <ul>
+// HTML-INDEX-NEXT:           <li>
+// HTML-INDEX-NEXT:             <span>
+// HTML-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">Color</a>
+// HTML-INDEX-NEXT:             </span>
+// HTML-INDEX-NEXT:           </li>
+// HTML-INDEX-NEXT:         </ul>
+// HTML-INDEX-NEXT:       </li>
+// HTML-INDEX-NEXT:     </ol>
+// HTML-INDEX-NEXT:   </div>
+// HTML-INDEX-NEXT: </main>
+
+// MD-INDEX: # Global Namespace
+// MD-INDEX: ## Enums
+// MD-INDEX: | enum Color |
+// MD-INDEX: --
+// MD-INDEX: | Red |
+// MD-INDEX: | Green |
+// MD-INDEX: | Blue |
+// MD-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#11*
+// MD-INDEX: **brief** For specifying RGB colors
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/namespace.cpp b/clang-tools-extra/test/clang-doc/namespace.cpp
new file mode 100644
index 0000000000000..9d2245ab7dac6
--- /dev/null
+++ b/clang-tools-extra/test/clang-doc/namespace.cpp
@@ -0,0 +1,545 @@
+// RUN: rm -rf %t && mkdir -p %t/docs %t/build
+// RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
+// RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
+// RUN: FileCheck %s -input-file=%t/docs/index_json.js -check-prefix=JSON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.html -check-prefix=HTML-ANOTHER-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.html -check-prefix=HTML-ANOTHER-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-GLOBAL-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.html -check-prefix=HTML-NESTED-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/index.html -check-prefix=HTML-NESTED-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/index.html -check-prefix=HTML-PRIMARY-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.html -check-prefix=HTML-PRIMARY-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.md -check-prefix=MD-ANOTHER-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.md -check-prefix=MD-ANOTHER-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-GLOBAL-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.md -check-prefix=MD-NESTED-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/index.md -check-prefix=MD-NESTED-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/index.md -check-prefix=MD-PRIMARY-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.md -check-prefix=MD-PRIMARY-CLASS
+// 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
+// RUN: rm -rf %t
+
+// Anonymous Namespace
+namespace
+{
+    void anonFunction() {}
+    class AnonClass {};
+}
+
+// Primary Namespace
+namespace PrimaryNamespace {
+    // Function in PrimaryNamespace
+    void functionInPrimaryNamespace() {}
+
+    // Class in PrimaryNamespace
+    class ClassInPrimaryNamespace {};
+
+    // Nested namespace
+    namespace NestedNamespace {
+        // Function in NestedNamespace
+        void functionInNestedNamespace() {}
+        // Class in NestedNamespace
+        class ClassInNestedNamespace {};
+    }
+}
+
+// AnotherNamespace
+namespace AnotherNamespace {
+    // Function in AnotherNamespace
+    void functionInAnotherNamespace() {}
+    // Class in AnotherNamespace
+    class ClassInAnotherNamespace {};
+}
+
+// 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:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "AnonClass",
+// JSON-INDEX-NEXT:           "RefType": "record",
+// JSON-INDEX-NEXT:           "Path": "@nonymous_namespace",
+// 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": "AnotherNamespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "AnotherNamespace",
+// JSON-INDEX-NEXT:       "Children": [
+// JSON-INDEX-NEXT:         {
+// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "ClassInAnotherNamespace",
+// JSON-INDEX-NEXT:           "RefType": "record",
+// JSON-INDEX-NEXT:           "Path": "AnotherNamespace",
+// 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": "GlobalNamespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "GlobalNamespace",
+// JSON-INDEX-NEXT:       "Children": []
+// JSON-INDEX-NEXT:     },
+// JSON-INDEX-NEXT:     {
+// JSON-INDEX-NEXT:       "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:       "Name": "PrimaryNamespace",
+// JSON-INDEX-NEXT:       "RefType": "namespace",
+// JSON-INDEX-NEXT:       "Path": "PrimaryNamespace",
+// JSON-INDEX-NEXT:       "Children": [
+// JSON-INDEX-NEXT:         {
+// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "ClassInPrimaryNamespace",
+// JSON-INDEX-NEXT:           "RefType": "record",
+// JSON-INDEX-NEXT:           "Path": "PrimaryNamespace",
+// JSON-INDEX-NEXT:           "Children": []
+// JSON-INDEX-NEXT:         },
+// JSON-INDEX-NEXT:         {
+// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:           "Name": "NestedNamespace",
+// JSON-INDEX-NEXT:           "RefType": "namespace",
+// JSON-INDEX-NEXT:           "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
+// JSON-INDEX-NEXT:           "Children": [
+// JSON-INDEX-NEXT:             {
+// JSON-INDEX-NEXT:               "USR": "{{([0-9A-F]{40})}}",
+// JSON-INDEX-NEXT:               "Name": "ClassInNestedNamespace",
+// JSON-INDEX-NEXT:               "RefType": "record",
+// JSON-INDEX-NEXT:               "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
+// 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-CLASS: <!DOCTYPE html>
+// HTML-ANON-CLASS-NEXT: <meta charset="utf-8"/>
+// HTML-ANON-CLASS-NEXT: <title>class AnonClass</title>
+// HTML-ANON-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-ANON-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-ANON-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-ANON-CLASS-NEXT: <header id="project-title"></header>
+// HTML-ANON-CLASS-NEXT: <main>
+// HTML-ANON-CLASS-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-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-ANON-CLASS-NEXT:     <h1>class AnonClass</h1>
+// HTML-ANON-CLASS-NEXT:     <p>Defined at line 13 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANON-CLASS-NEXT:   </div>
+// HTML-ANON-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
+// HTML-ANON-CLASS-NEXT: </main>
+
+// 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</p>
+// HTML-ANON-INDEX-NEXT:       </div>
+// HTML-ANON-INDEX-NEXT:     </div>
+// HTML-ANON-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-ANON-INDEX-NEXT:     <ul>
+// HTML-ANON-INDEX-NEXT:       <li>
+// HTML-ANON-INDEX-NEXT:         <a href="AnonClass.html">AnonClass</a>
+// HTML-ANON-INDEX-NEXT:       </li>
+// HTML-ANON-INDEX-NEXT:     </ul>
+// HTML-ANON-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-ANON-INDEX-NEXT:     <div>
+// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">anonFunction</h3>
+// HTML-ANON-INDEX-NEXT:       <p>void anonFunction()</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 12 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// 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="#Records">Records</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="#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})}}">anonFunction</a>
+// HTML-ANON-INDEX-NEXT:             </span>
+// HTML-ANON-INDEX-NEXT:           </li>
+// HTML-ANON-INDEX-NEXT:         </ul>
+// HTML-ANON-INDEX-NEXT:       </li>
+// HTML-ANON-INDEX-NEXT:     </ol>
+// HTML-ANON-INDEX-NEXT:   </div>
+// HTML-ANON-INDEX-NEXT: </main>
+
+// HTML-ANOTHER-CLASS: <!DOCTYPE html>
+// HTML-ANOTHER-CLASS-NEXT: <meta charset="utf-8"/>
+// HTML-ANOTHER-CLASS-NEXT: <title>class ClassInAnotherNamespace</title>
+// HTML-ANOTHER-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-ANOTHER-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-ANOTHER-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-ANOTHER-CLASS-NEXT: <header id="project-title"></header>
+// HTML-ANOTHER-CLASS-NEXT: <main>
+// HTML-ANOTHER-CLASS-NEXT:   <div id="sidebar-left" path="AnotherNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-ANOTHER-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-ANOTHER-CLASS-NEXT:     <h1>class ClassInAnotherNamespace</h1>
+// HTML-ANOTHER-CLASS-NEXT:     <p>Defined at line 36 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANOTHER-CLASS-NEXT:     <div>
+// HTML-ANOTHER-CLASS-NEXT:       <div>
+// HTML-ANOTHER-CLASS-NEXT:         <p> Class in AnotherNamespace</p>
+// HTML-ANOTHER-CLASS-NEXT:       </div>
+// HTML-ANOTHER-CLASS-NEXT:     </div>
+// HTML-ANOTHER-CLASS-NEXT:   </div>
+// HTML-ANOTHER-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
+// HTML-ANOTHER-CLASS-NEXT: </main>
+
+// HTML-ANOTHER-INDEX: <!DOCTYPE html>
+// HTML-ANOTHER-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-ANOTHER-INDEX-NEXT: <title>namespace AnotherNamespace</title>
+// HTML-ANOTHER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-ANOTHER-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-ANOTHER-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-ANOTHER-INDEX-NEXT: <header id="project-title"></header>
+// HTML-ANOTHER-INDEX-NEXT: <main>
+// HTML-ANOTHER-INDEX-NEXT:   <div id="sidebar-left" path="AnotherNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-ANOTHER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-ANOTHER-INDEX-NEXT:     <h1>namespace AnotherNamespace</h1>
+// HTML-ANOTHER-INDEX-NEXT:     <div>
+// HTML-ANOTHER-INDEX-NEXT:       <div>
+// HTML-ANOTHER-INDEX-NEXT:         <p> AnotherNamespace</p>
+// HTML-ANOTHER-INDEX-NEXT:       </div>
+// HTML-ANOTHER-INDEX-NEXT:     </div>
+// HTML-ANOTHER-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-ANOTHER-INDEX-NEXT:     <ul>
+// HTML-ANOTHER-INDEX-NEXT:       <li>
+// HTML-ANOTHER-INDEX-NEXT:         <a href="ClassInAnotherNamespace.html">ClassInAnotherNamespace</a>
+// HTML-ANOTHER-INDEX-NEXT:       </li>
+// HTML-ANOTHER-INDEX-NEXT:     </ul>
+// HTML-ANOTHER-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-ANOTHER-INDEX-NEXT:     <div>
+// HTML-ANOTHER-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInAnotherNamespace</h3>
+// HTML-ANOTHER-INDEX-NEXT:       <p>void functionInAnotherNamespace()</p>
+// HTML-ANOTHER-INDEX-NEXT:       <p>Defined at line 34 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANOTHER-INDEX-NEXT:       <div>
+// HTML-ANOTHER-INDEX-NEXT:         <div>
+// HTML-ANOTHER-INDEX-NEXT:           <p> Function in AnotherNamespace</p>
+// HTML-ANOTHER-INDEX-NEXT:         </div>
+// HTML-ANOTHER-INDEX-NEXT:       </div>
+// HTML-ANOTHER-INDEX-NEXT:     </div>
+// HTML-ANOTHER-INDEX-NEXT:   </div>
+// HTML-ANOTHER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-ANOTHER-INDEX-NEXT:     <ol>
+// HTML-ANOTHER-INDEX-NEXT:       <li>
+// HTML-ANOTHER-INDEX-NEXT:         <span>
+// HTML-ANOTHER-INDEX-NEXT:           <a href="#Records">Records</a>
+// HTML-ANOTHER-INDEX-NEXT:         </span>
+// HTML-ANOTHER-INDEX-NEXT:       </li>
+// HTML-ANOTHER-INDEX-NEXT:       <li>
+// HTML-ANOTHER-INDEX-NEXT:         <span>
+// HTML-ANOTHER-INDEX-NEXT:           <a href="#Functions">Functions</a>
+// HTML-ANOTHER-INDEX-NEXT:         </span>
+// HTML-ANOTHER-INDEX-NEXT:         <ul>
+// HTML-ANOTHER-INDEX-NEXT:           <li>
+// HTML-ANOTHER-INDEX-NEXT:             <span>
+// HTML-ANOTHER-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInAnotherNamespace</a>
+// HTML-ANOTHER-INDEX-NEXT:             </span>
+// HTML-ANOTHER-INDEX-NEXT:           </li>
+// HTML-ANOTHER-INDEX-NEXT:         </ul>
+// HTML-ANOTHER-INDEX-NEXT:       </li>
+// HTML-ANOTHER-INDEX-NEXT:     </ol>
+// HTML-ANOTHER-INDEX-NEXT:   </div>
+// HTML-ANOTHER-INDEX-NEXT: </main>
+
+// HTML-GLOBAL-INDEX: <!DOCTYPE html>
+// HTML-GLOBAL-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-GLOBAL-INDEX-NEXT: <title>Global Namespace</title>
+// HTML-GLOBAL-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-GLOBAL-INDEX-NEXT: <header id="project-title"></header>
+// HTML-GLOBAL-INDEX-NEXT: <main>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-GLOBAL-INDEX-NEXT:     <h1>Global Namespace</h1>
+// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
+// HTML-GLOBAL-INDEX-NEXT:     <ul>
+// HTML-GLOBAL-INDEX-NEXT:       <li>@nonymous_namespace</li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>PrimaryNamespace</li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>AnotherNamespace</li>
+// HTML-GLOBAL-INDEX-NEXT:     </ul>
+// HTML-GLOBAL-INDEX-NEXT:   </div>
+// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-GLOBAL-INDEX-NEXT:     <ol>
+// HTML-GLOBAL-INDEX-NEXT:       <li>
+// HTML-GLOBAL-INDEX-NEXT:         <span>
+// HTML-GLOBAL-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
+// HTML-GLOBAL-INDEX-NEXT:         </span>
+// HTML-GLOBAL-INDEX-NEXT:       </li>
+// HTML-GLOBAL-INDEX-NEXT:     </ol>
+// HTML-GLOBAL-INDEX-NEXT:   </div>
+// HTML-GLOBAL-INDEX-NEXT: </main>
+
+// HTML-NESTED-CLASS: <!DOCTYPE html>
+// HTML-NESTED-CLASS-NEXT: <meta charset="utf-8"/>
+// HTML-NESTED-CLASS-NEXT: <title>class ClassInNestedNamespace</title>
+// HTML-NESTED-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-NESTED-CLASS-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
+// HTML-NESTED-CLASS-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
+// HTML-NESTED-CLASS-NEXT: <header id="project-title"></header>
+// HTML-NESTED-CLASS-NEXT: <main>
+// HTML-NESTED-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace\NestedNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-NESTED-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-NESTED-CLASS-NEXT:     <h1>class ClassInNestedNamespace</h1>
+// HTML-NESTED-CLASS-NEXT:     <p>Defined at line 28 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-NESTED-CLASS-NEXT:     <div>
+// HTML-NESTED-CLASS-NEXT:       <div>
+// HTML-NESTED-CLASS-NEXT:         <p> Class in NestedNamespace</p>
+// HTML-NESTED-CLASS-NEXT:       </div>
+// HTML-NESTED-CLASS-NEXT:     </div>
+// HTML-NESTED-CLASS-NEXT:   </div>
+// HTML-NESTED-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
+// HTML-NESTED-CLASS-NEXT: </main>
+
+// HTML-NESTED-INDEX: <!DOCTYPE html>
+// HTML-NESTED-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-NESTED-INDEX-NEXT: <title>namespace NestedNamespace</title>
+// HTML-NESTED-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-NESTED-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
+// HTML-NESTED-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
+// HTML-NESTED-INDEX-NEXT: <header id="project-title"></header>
+// HTML-NESTED-INDEX-NEXT: <main>
+// HTML-NESTED-INDEX-NEXT:   <div id="sidebar-left" path="PrimaryNamespace{{[\/]}}NestedNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-NESTED-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-NESTED-INDEX-NEXT:     <h1>namespace NestedNamespace</h1>
+// HTML-NESTED-INDEX-NEXT:     <div>
+// HTML-NESTED-INDEX-NEXT:       <div>
+// HTML-NESTED-INDEX-NEXT:         <p> Nested namespace</p>
+// HTML-NESTED-INDEX-NEXT:       </div>
+// HTML-NESTED-INDEX-NEXT:     </div>
+// HTML-NESTED-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-NESTED-INDEX-NEXT:     <ul>
+// HTML-NESTED-INDEX-NEXT:       <li>
+// HTML-NESTED-INDEX-NEXT:         <a href="ClassInNestedNamespace.html">ClassInNestedNamespace</a>
+// HTML-NESTED-INDEX-NEXT:       </li>
+// HTML-NESTED-INDEX-NEXT:     </ul>
+// HTML-NESTED-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-NESTED-INDEX-NEXT:     <div>
+// HTML-NESTED-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInNestedNamespace</h3>
+// HTML-NESTED-INDEX-NEXT:       <p>void functionInNestedNamespace()</p>
+// HTML-NESTED-INDEX-NEXT:       <p>Defined at line 26 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-NESTED-INDEX-NEXT:       <div>
+// HTML-NESTED-INDEX-NEXT:         <div>
+// HTML-NESTED-INDEX-NEXT:           <p> Function in NestedNamespace</p>
+// HTML-NESTED-INDEX-NEXT:         </div>
+// HTML-NESTED-INDEX-NEXT:       </div>
+// HTML-NESTED-INDEX-NEXT:     </div>
+// HTML-NESTED-INDEX-NEXT:   </div>
+// HTML-NESTED-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-NESTED-INDEX-NEXT:     <ol>
+// HTML-NESTED-INDEX-NEXT:       <li>
+// HTML-NESTED-INDEX-NEXT:         <span>
+// HTML-NESTED-INDEX-NEXT:           <a href="#Records">Records</a>
+// HTML-NESTED-INDEX-NEXT:         </span>
+// HTML-NESTED-INDEX-NEXT:       </li>
+// HTML-NESTED-INDEX-NEXT:       <li>
+// HTML-NESTED-INDEX-NEXT:         <span>
+// HTML-NESTED-INDEX-NEXT:           <a href="#Functions">Functions</a>
+// HTML-NESTED-INDEX-NEXT:         </span>
+// HTML-NESTED-INDEX-NEXT:         <ul>
+// HTML-NESTED-INDEX-NEXT:           <li>
+// HTML-NESTED-INDEX-NEXT:             <span>
+// HTML-NESTED-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInNestedNamespace</a>
+// HTML-NESTED-INDEX-NEXT:             </span>
+// HTML-NESTED-INDEX-NEXT:           </li>
+// HTML-NESTED-INDEX-NEXT:         </ul>
+// HTML-NESTED-INDEX-NEXT:       </li>
+// HTML-NESTED-INDEX-NEXT:     </ol>
+// HTML-NESTED-INDEX-NEXT:   </div>
+// HTML-NESTED-INDEX-NEXT: </main>
+
+// HTML-PRIMARY-CLASS: <!DOCTYPE html>
+// HTML-PRIMARY-CLASS-NEXT: <meta charset="utf-8"/>
+// HTML-PRIMARY-CLASS-NEXT: <title>class ClassInPrimaryNamespace</title>
+// HTML-PRIMARY-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-PRIMARY-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-PRIMARY-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-PRIMARY-CLASS-NEXT: <header id="project-title"></header>
+// HTML-PRIMARY-CLASS-NEXT: <main>
+// HTML-PRIMARY-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-PRIMARY-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-PRIMARY-CLASS-NEXT:     <h1>class ClassInPrimaryNamespace</h1>
+// HTML-PRIMARY-CLASS-NEXT:     <p>Defined at line 21 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-PRIMARY-CLASS-NEXT:     <div>
+// HTML-PRIMARY-CLASS-NEXT:       <div>
+// HTML-PRIMARY-CLASS-NEXT:         <p> Class in PrimaryNamespace</p>
+// HTML-PRIMARY-CLASS-NEXT:       </div>
+// HTML-PRIMARY-CLASS-NEXT:     </div>
+// HTML-PRIMARY-CLASS-NEXT:   </div>
+// HTML-PRIMARY-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
+// HTML-PRIMARY-CLASS-NEXT: </main>
+
+// HTML-PRIMARY-INDEX: <!DOCTYPE html>
+// HTML-PRIMARY-INDEX-NEXT: <meta charset="utf-8"/>
+// HTML-PRIMARY-INDEX-NEXT: <title>namespace PrimaryNamespace</title>
+// HTML-PRIMARY-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-PRIMARY-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-PRIMARY-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-PRIMARY-INDEX-NEXT: <header id="project-title"></header>
+// HTML-PRIMARY-INDEX-NEXT: <main>
+// HTML-PRIMARY-INDEX-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
+// HTML-PRIMARY-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
+// HTML-PRIMARY-INDEX-NEXT:     <h1>namespace PrimaryNamespace</h1>
+// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
+// HTML-PRIMARY-INDEX-NEXT:     <ul>
+// HTML-PRIMARY-INDEX-NEXT:       <li>
+// HTML-PRIMARY-INDEX-NEXT:         <a href="NestedNamespace{{[\/]}}index.html">NestedNamespace</a>
+// HTML-PRIMARY-INDEX-NEXT:       </li>
+// HTML-PRIMARY-INDEX-NEXT:     </ul>
+// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Records">Records</h2>
+// HTML-PRIMARY-INDEX-NEXT:     <ul>
+// HTML-PRIMARY-INDEX-NEXT:       <li>
+// HTML-PRIMARY-INDEX-NEXT:         <a href="ClassInPrimaryNamespace.html">ClassInPrimaryNamespace</a>
+// HTML-PRIMARY-INDEX-NEXT:       </li>
+// HTML-PRIMARY-INDEX-NEXT:     </ul>
+// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
+// HTML-PRIMARY-INDEX-NEXT:     <div>
+// HTML-PRIMARY-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInPrimaryNamespace</h3>
+// HTML-PRIMARY-INDEX-NEXT:       <p>void functionInPrimaryNamespace()</p>
+// HTML-PRIMARY-INDEX-NEXT:       <p>Defined at line 18 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-PRIMARY-INDEX-NEXT:       <div>
+// HTML-PRIMARY-INDEX-NEXT:         <div>
+// HTML-PRIMARY-INDEX-NEXT:           <p> Function in PrimaryNamespace</p>
+// HTML-PRIMARY-INDEX-NEXT:         </div>
+// HTML-PRIMARY-INDEX-NEXT:       </div>
+// HTML-PRIMARY-INDEX-NEXT:     </div>
+// HTML-PRIMARY-INDEX-NEXT:   </div>
+// HTML-PRIMARY-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
+// HTML-PRIMARY-INDEX-NEXT:     <ol>
+// HTML-PRIMARY-INDEX-NEXT:       <li>
+// HTML-PRIMARY-INDEX-NEXT:         <span>
+// HTML-PRIMARY-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
+// HTML-PRIMARY-INDEX-NEXT:         </span>
+// HTML-PRIMARY-INDEX-NEXT:       </li>
+// HTML-PRIMARY-INDEX-NEXT:       <li>
+// HTML-PRIMARY-INDEX-NEXT:         <span>
+// HTML-PRIMARY-INDEX-NEXT:           <a href="#Records">Records</a>
+// HTML-PRIMARY-INDEX-NEXT:         </span>
+// HTML-PRIMARY-INDEX-NEXT:       </li>
+// HTML-PRIMARY-INDEX-NEXT:       <li>
+// HTML-PRIMARY-INDEX-NEXT:         <span>
+// HTML-PRIMARY-INDEX-NEXT:           <a href="#Functions">Functions</a>
+// HTML-PRIMARY-INDEX-NEXT:         </span>
+// HTML-PRIMARY-INDEX-NEXT:         <ul>
+// HTML-PRIMARY-INDEX-NEXT:           <li>
+// HTML-PRIMARY-INDEX-NEXT:             <span>
+// HTML-PRIMARY-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInPrimaryNamespace</a>
+// HTML-PRIMARY-INDEX-NEXT:             </span>
+// HTML-PRIMARY-INDEX-NEXT:           </li>
+// HTML-PRIMARY-INDEX-NEXT:         </ul>
+// HTML-PRIMARY-INDEX-NEXT:       </li>
+// HTML-PRIMARY-INDEX-NEXT:     </ol>
+// HTML-PRIMARY-INDEX-NEXT:   </div>
+// HTML-PRIMARY-INDEX-NEXT: </main>
+
+// MD-ANON-CLASS: # class AnonClass
+// MD-ANON-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#18*
+
+// MD-ANON-INDEX: # namespace @nonymous_namespace
+// MD-ANON-INDEX:  Anonymous Namespace
+// MD-ANON-INDEX: ## Records
+// MD-ANON-INDEX: * [AnonClass](AnonClass.md)
+// MD-ANON-INDEX: ## Functions
+// MD-ANON-INDEX: ### anonFunction
+// MD-ANON-INDEX: *void anonFunction()*
+// MD-ANON-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#28*
+
+// MD-ANOTHER-CLASS: # class ClassInAnotherNamespace
+// MD-ANOTHER-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#54*
+// MD-ANOTHER-CLASS:  Class in AnotherNamespace
+
+// MD-ANOTHER-INDEX: # namespace AnotherNamespace
+// MD-ANOTHER-INDEX: AnotherNamespace
+// MD-ANOTHER-INDEX: ## Records
+// MD-ANOTHER-INDEX: * [ClassInAnotherNamespace](ClassInAnotherNamespace.md)
+// MD-ANOTHER-INDEX: ## Functions
+// MD-ANOTHER-INDEX: ### functionInAnotherNamespace
+// MD-ANOTHER-INDEX: *void functionInAnotherNamespace()*
+// MD-ANOTHER-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#52*
+// MD-ANOTHER-INDEX: Function in AnotherNamespace
+
+// MD-GLOBAL-INDEX: # Global Namespace
+// MD-GLOBAL-INDEX: ## Namespaces
+// MD-GLOBAL-INDEX: * [@nonymous_namespace](..{{[\/]}}@nonymous_namespace{{[\/]}}index.md)
+// MD-GLOBAL-INDEX: * [PrimaryNamespace](..{{[\/]}}PrimaryNamespace{{[\/]}}index.md)
+// MD-GLOBAL-INDEX: * [AnotherNamespace](..{{[\/]}}AnotherNamespace{{[\/]}}index.md)
+
+// MD-NESTED-CLASS: # class ClassInNestedNamespace
+// MD-NESTED-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#45*
+// MD-NESTED-CLASS: Class in NestedNamespace
+
+// MD-NESTED-INDEX: # namespace NestedNamespace
+// MD-NESTED-INDEX: Nested namespace
+// MD-NESTED-INDEX: ## Records
+// MD-NESTED-INDEX: * [ClassInNestedNamespace](ClassInNestedNamespace.md)
+// MD-NESTED-INDEX: ## Functions
+// MD-NESTED-INDEX: ### functionInNestedNamespace
+// MD-NESTED-INDEX: *void functionInNestedNamespace()*
+// MD-NESTED-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#43*
+// MD-NESTED-INDEX: Function in NestedNamespace
+
+// MD-PRIMARY-CLASS: # class ClassInPrimaryNamespace
+// MD-PRIMARY-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#38*
+// MD-PRIMARY-CLASS: Class in PrimaryNamespace
+
+// MD-PRIMARY-INDEX: # namespace PrimaryNamespace
+// MD-PRIMARY-INDEX:  Primary Namespace
+// MD-PRIMARY-INDEX: ## Namespaces
+// MD-PRIMARY-INDEX: * [NestedNamespace](NestedNamespace{{[\/]}}index.md)
+// MD-PRIMARY-INDEX: ## Records
+// MD-PRIMARY-INDEX: * [ClassInPrimaryNamespace](ClassInPrimaryNamespace.md)
+// MD-PRIMARY-INDEX: ## Functions
+// MD-PRIMARY-INDEX: ### functionInPrimaryNamespace
+// MD-PRIMARY-INDEX: *void functionInPrimaryNamespace()*
+// MD-PRIMARY-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#35*
+// MD-PRIMARY-INDEX:  Function in PrimaryNamespace
+
+// MD-ALL-FILES: # All Files
+// MD-ALL-FILES: ## [@nonymous_namespace](@nonymous_namespace{{[\/]}}index.md)
+// MD-ALL-FILES: ## [AnotherNamespace](AnotherNamespace{{[\/]}}index.md)
+// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
+// MD-ALL-FILES: ## [PrimaryNamespace](PrimaryNamespace{{[\/]}}index.md)
+
+// MD-INDEX: #  C/C++ Reference
+// MD-INDEX: * Namespace: [@nonymous_namespace](@nonymous_namespace)
+// MD-INDEX: * Namespace: [AnotherNamespace](AnotherNamespace)
+// MD-INDEX: * Namespace: [PrimaryNamespace](PrimaryNamespace)
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/templates.cpp b/clang-tools-extra/test/clang-doc/templates.cpp
index 2e04a77ac9e62..e8c31fca828cd 100644
--- a/clang-tools-extra/test/clang-doc/templates.cpp
+++ b/clang-tools-extra/test/clang-doc/templates.cpp
@@ -15,6 +15,44 @@ void function<bool, 0>(bool x) {}
 template<class... T>
 void ParamPackFunction(T... args);
 
+/**
+* @brief Simple Container template class
+*/
+template <typename T>
+class Container {
+public:
+    void store(T value) {
+        content = value;
+    }
+
+    T retrieve() {
+        return content;
+    }
+
+private:
+    T content;
+};
+
+
+/**
+* @brief Simple Container template class
+*/
+template <>
+class Container<bool> {
+public:
+    void store(bool value) {
+        content = value ? 1 : 0;
+    }
+
+    bool retrieve() {
+        return content != 0;
+    }
+
+private:
+    unsigned char content;
+};
+
+
 // CHECK: ---
 // CHECK-NEXT: USR:             '{{([0-9A-F]{40})}}'
 // CHECK-NEXT: ChildFunctions:

>From 83090bea740ac9868dc919b51d0a25f024eddee3 Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Wed, 3 Jul 2024 00:22:09 -0400
Subject: [PATCH 2/6] [clang-doc] add more tests

---
 .../test/clang-doc/advance-project.test       | 21 +++-----
 .../test/clang-doc/basic-project.test         | 45 +++++++---------
 clang-tools-extra/test/clang-doc/enum.cpp     | 12 ++---
 .../test/clang-doc/namespace.cpp              | 51 ++++++++++---------
 .../test/clang-doc/templates.cpp              | 38 --------------
 5 files changed, 60 insertions(+), 107 deletions(-)

diff --git a/clang-tools-extra/test/clang-doc/advance-project.test b/clang-tools-extra/test/clang-doc/advance-project.test
index 6c3ec5bd33a7c..762b5b99e7d1a 100644
--- a/clang-tools-extra/test/clang-doc/advance-project.test
+++ b/clang-tools-extra/test/clang-doc/advance-project.test
@@ -1,17 +1,15 @@
-// RUN: rm -rf %t && mkdir -p %t/docs %t/build
-// RUN: sed 's|$test_dir|%/S|g' %S/Inputs/basic-project/database_template.json > %t/build/compile_commands.json
+// 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/@anonymous_namespace/index.html -check-prefix=HTML-ANON-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/@anonymous_namespace/index.md -check-prefix=MD-ANON-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
@@ -87,7 +85,7 @@
 // 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: <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>
@@ -269,8 +267,8 @@
 // HTML-GLOBAL-INDEX-NEXT:     <h1>Global Namespace</h1>
 // HTML-GLOBAL-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
 // HTML-GLOBAL-INDEX-NEXT:     <ul>
-// HTML-GLOBAL-INDEX-NEXT:       <li>@nonymous_namespace</li>
-// HTML-GLOBAL-INDEX-NEXT:       <li>OuterNamespace</li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>{{.*}}</li>
+// HTML-GLOBAL-INDEX-NEXT:       <li>{{.*}}</li>
 // HTML-GLOBAL-INDEX-NEXT:     </ul>
 // HTML-GLOBAL-INDEX-NEXT:     <h2 id="Records">Records</h2>
 // HTML-GLOBAL-INDEX-NEXT:     <ul>
@@ -621,8 +619,8 @@
 
 // MD-GLOBAL-INDEX: # Global Namespace
 // MD-GLOBAL-INDEX: ## Namespaces
-// MD-GLOBAL-INDEX: * [OuterNamespace](..{{[\/]}}OuterNamespace{{[\/]}}index.md)
-// MD-GLOBAL-INDEX: * [@nonymous_namespace](..{{[\/]}}@nonymous_namespace{{[\/]}}index.md)
+// MD-GLOBAL-INDEX: * {{.*}}
+// MD-GLOBAL-INDEX: * {{.*}}
 // MD-GLOBAL-INDEX: ## Records
 // MD-GLOBAL-INDEX: * [Array](Array.md)
 
@@ -701,6 +699,3 @@
 // MD-INDEX: #  C/C++ Reference
 // MD-INDEX: * Namespace: [GlobalNamespace](GlobalNamespace)
 // MD-INDEX: * Namespace: [OuterNamespace](OuterNamespace)
-
-// MD-ALL-FILES: # All Files
-// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace/index.md)
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/basic-project.test b/clang-tools-extra/test/clang-doc/basic-project.test
index 92f08e83fb88f..9011d4c3b52f9 100644
--- a/clang-tools-extra/test/clang-doc/basic-project.test
+++ b/clang-tools-extra/test/clang-doc/basic-project.test
@@ -1,15 +1,13 @@
-// RUN: rm -rf %t && mkdir -p %t/docs %t/build
 // RUN: sed 's|$test_dir|%/S|g' %S/Inputs/basic-project/database_template.json > %t/build/compile_commands.json
 // RUN: clang-doc --format=html --output=%t/docs --executor=all-TUs %t/build/compile_commands.json
+// RUN: clang-doc --format=md --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/GlobalNamespace/Shape.html -check-prefix=HTML-SHAPE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Calculator.html -check-prefix=HTML-CALC
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.html -check-prefix=HTML-RECTANGLE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.html -check-prefix=HTML-CIRCLE
-
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Calculator.md -check-prefix=MD-CALC
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.md -check-prefix=MD-CIRCLE
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.md -check-prefix=MD-RECTANGLE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Shape.md -check-prefix=MD-SHAPE
 // RUN: FileCheck %s -input-file=%t/docs/all_files.md -check-prefix=MD-ALL-FILES
@@ -367,34 +365,34 @@
 // HTML-CIRCLE-NEXT: </main>
 
 // MD-CALC: # class Calculator
-// MD-CALC: *Defined at ./include\Calculator.h#8*
+// MD-CALC: *Defined at .{{[\/]}}include{{[\/]}}Calculator.h#8*
 // MD-CALC: **brief** A simple calculator class.
 // MD-CALC:  Provides basic arithmetic operations.
 // MD-CALC: ## Functions
 // MD-CALC: ### add
 // MD-CALC: *public int add(int a, int b)*
-// MD-CALC: *Defined at ./src/Calculator.cpp#3*
+// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#3*
 // MD-CALC: **brief** Adds two integers.
 // MD-CALC: **a** First integer.
 // MD-CALC: **b** Second integer.
 // MD-CALC: **return** int The sum of a and b.
 // MD-CALC: ### subtract
 // MD-CALC: *public int subtract(int a, int b)*
-// MD-CALC: *Defined at ./src/Calculator.cpp#7*
+// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#7*
 // MD-CALC: **brief** Subtracts the second integer from the first.
 // MD-CALC: **a** First integer.
 // MD-CALC: **b** Second integer.
 // MD-CALC: **return** int The result of a - b.
 // MD-CALC: ### multiply
 // MD-CALC: *public int multiply(int a, int b)*
-// MD-CALC: *Defined at ./src/Calculator.cpp#11*
+// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#11*
 // MD-CALC: **brief** Multiplies two integers.
 // MD-CALC: **a** First integer.
 // MD-CALC: **b** Second integer.
 // MD-CALC: **return** int The product of a and b.
 // MD-CALC: ### divide
 // MD-CALC: *public double divide(int a, int b)*
-// MD-CALC: *Defined at ./src/Calculator.cpp#15*
+// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#15*
 // MD-CALC: **brief** Divides the first integer by the second.
 // MD-CALC: **a** First integer.
 // MD-CALC: **b** Second integer.
@@ -402,7 +400,7 @@
 // MD-CALC: **throw**if b is zero.
 
 // MD-CIRCLE: # class Circle
-// MD-CIRCLE: *Defined at ./include\Circle.h#10*
+// MD-CIRCLE: *Defined at .{{[\/]}}include{{[\/]}}Circle.h#10*
 // MD-CIRCLE: **brief** Circle class derived from Shape.
 // MD-CIRCLE:  Represents a circle with a given radius.
 // MD-CIRCLE: Inherits from Shape
@@ -411,29 +409,22 @@
 // MD-CIRCLE: ## Functions
 // MD-CIRCLE: ### Circle
 // MD-CIRCLE: *public void Circle(double radius)*
-// MD-CIRCLE: *Defined at ./src/Circle.cpp#3*
+// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#3*
 // MD-CIRCLE: **brief** Constructs a new Circle object.
 // MD-CIRCLE: **radius** Radius of the circle.
 // MD-CIRCLE: ### area
 // MD-CIRCLE: *public double area()*
-// MD-CIRCLE: *Defined at ./src/Circle.cpp#5*
+// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#5*
 // MD-CIRCLE: **brief** Calculates the area of the circle.
 // MD-CIRCLE: **return** double The area of the circle.
 // MD-CIRCLE: ### perimeter
 // MD-CIRCLE: *public double perimeter()*
-// MD-CIRCLE: *Defined at ./src/Circle.cpp#9*
+// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#9*
 // MD-CIRCLE: **brief** Calculates the perimeter of the circle.
 // MD-CIRCLE: **return** double The perimeter of the circle.
 
-// MD-INDEX: # Global Namespace
-// MD-INDEX: ## Records
-// MD-INDEX: * [Calculator](Calculator.md)
-// MD-INDEX: * [Shape](Shape.md)
-// MD-INDEX: * [Circle](Circle.md)
-// MD-INDEX: * [Rectangle](Rectangle.md)
-
 // MD-RECTANGLE: # class Rectangle
-// MD-RECTANGLE: *Defined at ./include\Rectangle.h#10*
+// MD-RECTANGLE: *Defined at .{{[\/]}}include{{[\/]}}Rectangle.h#10*
 // MD-RECTANGLE: **brief** Rectangle class derived from Shape.
 // MD-RECTANGLE:  Represents a rectangle with a given width and height.
 // MD-RECTANGLE: Inherits from Shape
@@ -443,29 +434,29 @@
 // MD-RECTANGLE: ## Functions
 // MD-RECTANGLE: ### Rectangle
 // MD-RECTANGLE: *public void Rectangle(double width, double height)*
-// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#3*
+// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#3*
 // MD-RECTANGLE: **brief** Constructs a new Rectangle object.
 // MD-RECTANGLE: **width** Width of the rectangle.
 // MD-RECTANGLE: **height** Height of the rectangle.
 // MD-RECTANGLE: ### area
 // MD-RECTANGLE: *public double area()*
-// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#6*
+// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#6*
 // MD-RECTANGLE: **brief** Calculates the area of the rectangle.
 // MD-RECTANGLE: **return** double The area of the rectangle.
 // MD-RECTANGLE: ### perimeter
 // MD-RECTANGLE: *public double perimeter()*
-// MD-RECTANGLE: *Defined at ./src/Rectangle.cpp#10*
+// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#10*
 // MD-RECTANGLE: **brief** Calculates the perimeter of the rectangle.
 // MD-RECTANGLE: **return** double The perimeter of the rectangle.
 
 // MD-SHAPE: # class Shape
-// MD-SHAPE: *Defined at ./include\Shape.h#8*
+// MD-SHAPE: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#8*
 // MD-SHAPE: **brief** Abstract base class for shapes.
 // MD-SHAPE:  Provides a common interface for different types of shapes.
 // MD-SHAPE: ## Functions
 // MD-SHAPE: ### ~Shape
 // MD-SHAPE: *public void ~Shape()*
-// MD-SHAPE: *Defined at ./include\Shape.h#13*
+// MD-SHAPE: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#13*
 // MD-SHAPE: **brief** Virtual destructor.
 // MD-SHAPE: ### area
 // MD-SHAPE: *public double area()*
@@ -477,5 +468,7 @@
 // MD-SHAPE: **return** double The perimeter of the shape.
 
 // MD-ALL-FILES: # All Files
-// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace/index.md)
+// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
 
+// MD-INDEX: #  C/C++ Reference
+// MD-INDEX: * Namespace: [GlobalNamespace](GlobalNamespace)
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp b/clang-tools-extra/test/clang-doc/enum.cpp
index d3a79d590937b..dd5b03e191a65 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -1,4 +1,4 @@
-// RUN: rm -rf %t && mkdir -p %t/docs %t/build
+// RUN: mkdir -p %t/docs %t/build
 // RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
 // RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-INDEX
@@ -17,9 +17,9 @@ enum Color {
 // HTML-INDEX: <!DOCTYPE html>
 // HTML-INDEX-NEXT: <meta charset="utf-8"/>
 // HTML-INDEX-NEXT: <title>Global Namespace</title>
-// HTML-INDEX-NEXT: <link rel="stylesheet" href="../clang-doc-default-stylesheet.css"/>
-// HTML-INDEX-NEXT: <script src="../index_json.js"></script>
-// HTML-INDEX-NEXT: <script src="../index.js"></script>
+// HTML-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
+// HTML-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
+// HTML-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
 // HTML-INDEX-NEXT: <header id="project-title"></header>
 // HTML-INDEX-NEXT: <main>
 // HTML-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
@@ -33,7 +33,7 @@ enum Color {
 // HTML-INDEX-NEXT:         <li>Green</li>
 // HTML-INDEX-NEXT:         <li>Blue</li>
 // HTML-INDEX-NEXT:       </ul>
-// HTML-INDEX-NEXT:       <p>Defined at line 9 of file clang-tools-extra\test\clang-doc\enum.cpp</p>
+// HTML-INDEX-NEXT:       <p>Defined at line 11 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
 // HTML-INDEX-NEXT:       <div>
 // HTML-INDEX-NEXT:         <div></div>
 // HTML-INDEX-NEXT:       </div>
@@ -64,5 +64,5 @@ enum Color {
 // MD-INDEX: | Red |
 // MD-INDEX: | Green |
 // MD-INDEX: | Blue |
-// MD-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#11*
+// MD-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#11*
 // MD-INDEX: **brief** For specifying RGB colors
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/namespace.cpp b/clang-tools-extra/test/clang-doc/namespace.cpp
index 9d2245ab7dac6..f6b64294a43f5 100644
--- a/clang-tools-extra/test/clang-doc/namespace.cpp
+++ b/clang-tools-extra/test/clang-doc/namespace.cpp
@@ -1,9 +1,8 @@
-// RUN: rm -rf %t && mkdir -p %t/docs %t/build
-// RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
-// RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
+// RUN: clang-doc --format=html --output=%t/docs --executor=standalone %s
+// RUN: clang-doc --format=md --output=%t/docs --executor=standalone %s
 // RUN: FileCheck %s -input-file=%t/docs/index_json.js -check-prefix=JSON-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.html -check-prefix=HTML-ANOTHER-CLASS
 // RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.html -check-prefix=HTML-ANOTHER-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-GLOBAL-INDEX
@@ -11,8 +10,8 @@
 // RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/index.html -check-prefix=HTML-NESTED-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/index.html -check-prefix=HTML-PRIMARY-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.html -check-prefix=HTML-PRIMARY-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@anonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS
+// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.md -check-prefix=MD-ANOTHER-CLASS
 // RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.md -check-prefix=MD-ANOTHER-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-GLOBAL-INDEX
@@ -22,7 +21,6 @@
 // RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.md -check-prefix=MD-PRIMARY-CLASS
 // 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
-// RUN: rm -rf %t
 
 // Anonymous Namespace
 namespace
@@ -145,7 +143,7 @@ namespace AnotherNamespace {
 // HTML-ANON-CLASS-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-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-ANON-CLASS-NEXT:     <h1>class AnonClass</h1>
-// HTML-ANON-CLASS-NEXT:     <p>Defined at line 13 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANON-CLASS-NEXT:     <p>Defined at line 31 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-ANON-CLASS-NEXT:   </div>
 // HTML-ANON-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
 // HTML-ANON-CLASS-NEXT: </main>
@@ -176,7 +174,7 @@ namespace AnotherNamespace {
 // HTML-ANON-INDEX-NEXT:     <div>
 // HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">anonFunction</h3>
 // HTML-ANON-INDEX-NEXT:       <p>void anonFunction()</p>
-// HTML-ANON-INDEX-NEXT:       <p>Defined at line 12 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANON-INDEX-NEXT:       <p>Defined at line 30 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // 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">
@@ -213,7 +211,7 @@ namespace AnotherNamespace {
 // HTML-ANOTHER-CLASS-NEXT:   <div id="sidebar-left" path="AnotherNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-ANOTHER-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-ANOTHER-CLASS-NEXT:     <h1>class ClassInAnotherNamespace</h1>
-// HTML-ANOTHER-CLASS-NEXT:     <p>Defined at line 36 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANOTHER-CLASS-NEXT:     <p>Defined at line 56 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-ANOTHER-CLASS-NEXT:     <div>
 // HTML-ANOTHER-CLASS-NEXT:       <div>
 // HTML-ANOTHER-CLASS-NEXT:         <p> Class in AnotherNamespace</p>
@@ -249,7 +247,7 @@ namespace AnotherNamespace {
 // HTML-ANOTHER-INDEX-NEXT:     <div>
 // HTML-ANOTHER-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInAnotherNamespace</h3>
 // HTML-ANOTHER-INDEX-NEXT:       <p>void functionInAnotherNamespace()</p>
-// HTML-ANOTHER-INDEX-NEXT:       <p>Defined at line 34 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-ANOTHER-INDEX-NEXT:       <p>Defined at line 54 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-ANOTHER-INDEX-NEXT:       <div>
 // HTML-ANOTHER-INDEX-NEXT:         <div>
 // HTML-ANOTHER-INDEX-NEXT:           <p> Function in AnotherNamespace</p>
@@ -320,7 +318,7 @@ namespace AnotherNamespace {
 // HTML-NESTED-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace\NestedNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-NESTED-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-NESTED-CLASS-NEXT:     <h1>class ClassInNestedNamespace</h1>
-// HTML-NESTED-CLASS-NEXT:     <p>Defined at line 28 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-NESTED-CLASS-NEXT:     <p>Defined at line 47 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-NESTED-CLASS-NEXT:     <div>
 // HTML-NESTED-CLASS-NEXT:       <div>
 // HTML-NESTED-CLASS-NEXT:         <p> Class in NestedNamespace</p>
@@ -356,7 +354,7 @@ namespace AnotherNamespace {
 // HTML-NESTED-INDEX-NEXT:     <div>
 // HTML-NESTED-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInNestedNamespace</h3>
 // HTML-NESTED-INDEX-NEXT:       <p>void functionInNestedNamespace()</p>
-// HTML-NESTED-INDEX-NEXT:       <p>Defined at line 26 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-NESTED-INDEX-NEXT:       <p>Defined at line 45 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-NESTED-INDEX-NEXT:       <div>
 // HTML-NESTED-INDEX-NEXT:         <div>
 // HTML-NESTED-INDEX-NEXT:           <p> Function in NestedNamespace</p>
@@ -398,7 +396,7 @@ namespace AnotherNamespace {
 // HTML-PRIMARY-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-PRIMARY-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-PRIMARY-CLASS-NEXT:     <h1>class ClassInPrimaryNamespace</h1>
-// HTML-PRIMARY-CLASS-NEXT:     <p>Defined at line 21 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-PRIMARY-CLASS-NEXT:     <p>Defined at line 40 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-PRIMARY-CLASS-NEXT:     <div>
 // HTML-PRIMARY-CLASS-NEXT:       <div>
 // HTML-PRIMARY-CLASS-NEXT:         <p> Class in PrimaryNamespace</p>
@@ -419,6 +417,11 @@ namespace AnotherNamespace {
 // HTML-PRIMARY-INDEX-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-PRIMARY-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-PRIMARY-INDEX-NEXT:     <h1>namespace PrimaryNamespace</h1>
+// HTML-PRIMARY-INDEX-NEXT:     <div>
+// HTML-PRIMARY-INDEX-NEXT:       <div>
+// HTML-PRIMARY-INDEX-NEXT:         <p> Primary Namespace</p>
+// HTML-PRIMARY-INDEX-NEXT:       </div>
+// HTML-PRIMARY-INDEX-NEXT:     </div>
 // HTML-PRIMARY-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
 // HTML-PRIMARY-INDEX-NEXT:     <ul>
 // HTML-PRIMARY-INDEX-NEXT:       <li>
@@ -435,7 +438,7 @@ namespace AnotherNamespace {
 // HTML-PRIMARY-INDEX-NEXT:     <div>
 // HTML-PRIMARY-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInPrimaryNamespace</h3>
 // HTML-PRIMARY-INDEX-NEXT:       <p>void functionInPrimaryNamespace()</p>
-// HTML-PRIMARY-INDEX-NEXT:       <p>Defined at line 18 of file clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
+// HTML-PRIMARY-INDEX-NEXT:       <p>Defined at line 37 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
 // HTML-PRIMARY-INDEX-NEXT:       <div>
 // HTML-PRIMARY-INDEX-NEXT:         <div>
 // HTML-PRIMARY-INDEX-NEXT:           <p> Function in PrimaryNamespace</p>
@@ -472,7 +475,7 @@ namespace AnotherNamespace {
 // HTML-PRIMARY-INDEX-NEXT: </main>
 
 // MD-ANON-CLASS: # class AnonClass
-// MD-ANON-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#18*
+// MD-ANON-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#31*
 
 // MD-ANON-INDEX: # namespace @nonymous_namespace
 // MD-ANON-INDEX:  Anonymous Namespace
@@ -481,10 +484,10 @@ namespace AnotherNamespace {
 // MD-ANON-INDEX: ## Functions
 // MD-ANON-INDEX: ### anonFunction
 // MD-ANON-INDEX: *void anonFunction()*
-// MD-ANON-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#28*
+// MD-ANON-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#30*
 
 // MD-ANOTHER-CLASS: # class ClassInAnotherNamespace
-// MD-ANOTHER-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#54*
+// MD-ANOTHER-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#56*
 // MD-ANOTHER-CLASS:  Class in AnotherNamespace
 
 // MD-ANOTHER-INDEX: # namespace AnotherNamespace
@@ -494,7 +497,7 @@ namespace AnotherNamespace {
 // MD-ANOTHER-INDEX: ## Functions
 // MD-ANOTHER-INDEX: ### functionInAnotherNamespace
 // MD-ANOTHER-INDEX: *void functionInAnotherNamespace()*
-// MD-ANOTHER-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#52*
+// MD-ANOTHER-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#54*
 // MD-ANOTHER-INDEX: Function in AnotherNamespace
 
 // MD-GLOBAL-INDEX: # Global Namespace
@@ -504,7 +507,7 @@ namespace AnotherNamespace {
 // MD-GLOBAL-INDEX: * [AnotherNamespace](..{{[\/]}}AnotherNamespace{{[\/]}}index.md)
 
 // MD-NESTED-CLASS: # class ClassInNestedNamespace
-// MD-NESTED-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#45*
+// MD-NESTED-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#47*
 // MD-NESTED-CLASS: Class in NestedNamespace
 
 // MD-NESTED-INDEX: # namespace NestedNamespace
@@ -514,11 +517,11 @@ namespace AnotherNamespace {
 // MD-NESTED-INDEX: ## Functions
 // MD-NESTED-INDEX: ### functionInNestedNamespace
 // MD-NESTED-INDEX: *void functionInNestedNamespace()*
-// MD-NESTED-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#43*
+// MD-NESTED-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#45*
 // MD-NESTED-INDEX: Function in NestedNamespace
 
 // MD-PRIMARY-CLASS: # class ClassInPrimaryNamespace
-// MD-PRIMARY-CLASS: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#38*
+// MD-PRIMARY-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#40*
 // MD-PRIMARY-CLASS: Class in PrimaryNamespace
 
 // MD-PRIMARY-INDEX: # namespace PrimaryNamespace
@@ -530,7 +533,7 @@ namespace AnotherNamespace {
 // MD-PRIMARY-INDEX: ## Functions
 // MD-PRIMARY-INDEX: ### functionInPrimaryNamespace
 // MD-PRIMARY-INDEX: *void functionInPrimaryNamespace()*
-// MD-PRIMARY-INDEX: *Defined at clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#35*
+// MD-PRIMARY-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#37*
 // MD-PRIMARY-INDEX:  Function in PrimaryNamespace
 
 // MD-ALL-FILES: # All Files
diff --git a/clang-tools-extra/test/clang-doc/templates.cpp b/clang-tools-extra/test/clang-doc/templates.cpp
index e8c31fca828cd..2e04a77ac9e62 100644
--- a/clang-tools-extra/test/clang-doc/templates.cpp
+++ b/clang-tools-extra/test/clang-doc/templates.cpp
@@ -15,44 +15,6 @@ void function<bool, 0>(bool x) {}
 template<class... T>
 void ParamPackFunction(T... args);
 
-/**
-* @brief Simple Container template class
-*/
-template <typename T>
-class Container {
-public:
-    void store(T value) {
-        content = value;
-    }
-
-    T retrieve() {
-        return content;
-    }
-
-private:
-    T content;
-};
-
-
-/**
-* @brief Simple Container template class
-*/
-template <>
-class Container<bool> {
-public:
-    void store(bool value) {
-        content = value ? 1 : 0;
-    }
-
-    bool retrieve() {
-        return content != 0;
-    }
-
-private:
-    unsigned char content;
-};
-
-
 // CHECK: ---
 // CHECK-NEXT: USR:             '{{([0-9A-F]{40})}}'
 // CHECK-NEXT: ChildFunctions:

>From 263d40052534c363155a35b34ecb3435359da760 Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Wed, 3 Jul 2024 00:34:35 -0400
Subject: [PATCH 3/6] [clang-doc] clean up command

---
 clang-tools-extra/test/clang-doc/enum.cpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/clang-tools-extra/test/clang-doc/enum.cpp b/clang-tools-extra/test/clang-doc/enum.cpp
index dd5b03e191a65..0d0d4605531e3 100644
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ b/clang-tools-extra/test/clang-doc/enum.cpp
@@ -1,9 +1,7 @@
-// RUN: mkdir -p %t/docs %t/build
 // RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
 // RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-INDEX
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-INDEX
-// RUN: rm -rf %t
 
 /**
  * @brief For specifying RGB colors

>From 6e02df6824854b1decb21e32ba3ee731e66b4fbc Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Wed, 3 Jul 2024 22:40:42 -0400
Subject: [PATCH 4/6] [clang-doc] remove boilerplate from testcase

---
 .../test/clang-doc/advance-project.test       | 686 ++++++------------
 .../test/clang-doc/basic-project.test         | 159 +---
 clang-tools-extra/test/clang-doc/enum.cpp     |  66 --
 .../test/clang-doc/namespace.cpp              | 548 --------------
 4 files changed, 239 insertions(+), 1220 deletions(-)
 delete mode 100644 clang-tools-extra/test/clang-doc/enum.cpp
 delete mode 100644 clang-tools-extra/test/clang-doc/namespace.cpp

diff --git a/clang-tools-extra/test/clang-doc/advance-project.test b/clang-tools-extra/test/clang-doc/advance-project.test
index 762b5b99e7d1a..6e499baabe7da 100644
--- a/clang-tools-extra/test/clang-doc/advance-project.test
+++ b/clang-tools-extra/test/clang-doc/advance-project.test
@@ -82,480 +82,228 @@
 // 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-ANON-INDEX-NEXT:             <span>
-// HTML-ANON-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">doubleToString</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})}}">print</a>
-// HTML-ANON-INDEX-NEXT:             </span>
-// HTML-ANON-INDEX-NEXT:           </li>
-// HTML-ANON-INDEX-NEXT:         </ul>
-// HTML-ANON-INDEX-NEXT:       </li>
-// HTML-ANON-INDEX-NEXT:     </ol>
-// HTML-ANON-INDEX-NEXT:   </div>
-// HTML-ANON-INDEX-NEXT: </main>
+// HTML-ANON-INDEX: <h1>namespace @nonymous_namespace</h1>
+// HTML-ANON-INDEX: <div>
+// HTML-ANON-INDEX:   <div>
+// HTML-ANON-INDEX:     <p> Anonymous namespace for utility functions</p>
+// HTML-ANON-INDEX:   </div>
+// HTML-ANON-INDEX: </div>
+// HTML-ANON-INDEX: <h2 id="Functions">Functions</h2>
+// HTML-ANON-INDEX: <div>
+// HTML-ANON-INDEX:   <h3 id="6C29E21B8E17CC2B7644472BEEA8AE41173AC8A5">getRandomNumber</h3>
+// HTML-ANON-INDEX:   <p>int getRandomNumber()</p>
+// HTML-ANON-INDEX:   <p>Defined at line 9 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <div>
+// HTML-ANON-INDEX:     <div></div>
+// HTML-ANON-INDEX:     <div>
+// HTML-ANON-INDEX:       <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:     </div>
+// HTML-ANON-INDEX:   </div>
+// HTML-ANON-INDEX:   <h3 id="C880E378D7684B69ACB874F378AE97484CFC8A31">intToString</h3>
+// HTML-ANON-INDEX:   <p>void intToString(int value, char * buffer, int & index)</p>
+// HTML-ANON-INDEX:   <p>Defined at line 18 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <div>
+// HTML-ANON-INDEX:     <div></div>
+// HTML-ANON-INDEX:     <div>
+// HTML-ANON-INDEX:       <p> Converts an integer value to its string representation and stores the result in the provided buffer.</p>
+// HTML-ANON-INDEX:     </div>
+// HTML-ANON-INDEX:   </div>
+// HTML-ANON-INDEX:   <h3 id="BF4741DC50474C9F02654E187CF39DF4ACFC4C03">doubleToString</h3>
+// HTML-ANON-INDEX:   <p>void doubleToString(double value, char * buffer, int & index)</p>
+// HTML-ANON-INDEX:   <p>Defined at line 26 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <div>
+// HTML-ANON-INDEX:     <div></div>
+// HTML-ANON-INDEX:     <div>
+// HTML-ANON-INDEX:       <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:     </div>
+// HTML-ANON-INDEX:   </div>
+// HTML-ANON-INDEX:   <h3 id="8DFD5FCED322C10A7E16339E1CADBB4809B1BCB8">print</h3>
+// HTML-ANON-INDEX:   <p>void print(const char * str)</p>
+// HTML-ANON-INDEX:   <p>Defined at line 33 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <div>
+// HTML-ANON-INDEX:     <div></div>
+// HTML-ANON-INDEX:     <div>
+// HTML-ANON-INDEX:       <p> Prints the provided null-terminated string to the standard output.</p>
+// HTML-ANON-INDEX:     </div>
+// HTML-ANON-INDEX:   </div>
+// HTML-ANON-INDEX: </div>
 
-// HTML-ARRAY: <!DOCTYPE html>
-// HTML-ARRAY-NEXT: <meta charset="utf-8"/>
-// HTML-ARRAY-NEXT: <title>class Array</title>
-// HTML-ARRAY-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-ARRAY-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-ARRAY-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-ARRAY-NEXT: <header id="project-title"></header>
-// HTML-ARRAY-NEXT: <main>
-// HTML-ARRAY-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-ARRAY-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-ARRAY-NEXT:     <h1>class Array</h1>
-// HTML-ARRAY-NEXT:     <p>Defined at line 13 of file .{{[\/]}}include{{[\/]}}Array.h</p>
-// HTML-ARRAY-NEXT:     <div>
-// HTML-ARRAY-NEXT:       <div></div>
-// HTML-ARRAY-NEXT:     </div>
-// HTML-ARRAY-NEXT:     <h2 id="Members">Members</h2>
-// HTML-ARRAY-NEXT:     <ul>
-// HTML-ARRAY-NEXT:       <li>private T[Size] m_data</li>
-// HTML-ARRAY-NEXT:     </ul>
-// HTML-ARRAY-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-ARRAY-NEXT:     <div>
-// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Array<T, Size></h3>
-// HTML-ARRAY-NEXT:       <p>public void Array<T, Size>()</p>
-// HTML-ARRAY-NEXT:       <p>Defined at line 8 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
-// HTML-ARRAY-NEXT:       <div>
-// HTML-ARRAY-NEXT:         <div></div>
-// HTML-ARRAY-NEXT:         <div>
-// HTML-ARRAY-NEXT:           <p> Initializes all elements of the array to their default value.</p>
-// HTML-ARRAY-NEXT:         </div>
-// HTML-ARRAY-NEXT:       </div>
-// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">operator[]</h3>
-// HTML-ARRAY-NEXT:       <p>public T & operator[](int index)</p>
-// HTML-ARRAY-NEXT:       <p>Defined at line 18 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
-// HTML-ARRAY-NEXT:       <div>
-// HTML-ARRAY-NEXT:         <div></div>
-// HTML-ARRAY-NEXT:         <div>
-// HTML-ARRAY-NEXT:           <p> Array access operator for Array<T, Size> Provides read and write access to elements in the array. This implementation does not perform bounds checking</p>
-// HTML-ARRAY-NEXT:         </div>
-// HTML-ARRAY-NEXT:       </div>
-// HTML-ARRAY-NEXT:       <h3 id="{{([0-9A-F]{40})}}">size</h3>
-// HTML-ARRAY-NEXT:       <p>public int size()</p>
-// HTML-ARRAY-NEXT:       <p>Defined at line 28 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
-// HTML-ARRAY-NEXT:       <div>
-// HTML-ARRAY-NEXT:         <div></div>
-// HTML-ARRAY-NEXT:         <div>
-// HTML-ARRAY-NEXT:           <p> Get the size of the array for Array<T, Size></p>
-// HTML-ARRAY-NEXT:         </div>
-// HTML-ARRAY-NEXT:       </div>
-// HTML-ARRAY-NEXT:     </div>
-// HTML-ARRAY-NEXT:   </div>
-// HTML-ARRAY-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-ARRAY-NEXT:     <ol>
-// HTML-ARRAY-NEXT:       <li>
-// HTML-ARRAY-NEXT:         <span>
-// HTML-ARRAY-NEXT:           <a href="#Members">Members</a>
-// HTML-ARRAY-NEXT:         </span>
-// HTML-ARRAY-NEXT:       </li>
-// HTML-ARRAY-NEXT:       <li>
-// HTML-ARRAY-NEXT:         <span>
-// HTML-ARRAY-NEXT:           <a href="#Functions">Functions</a>
-// HTML-ARRAY-NEXT:         </span>
-// HTML-ARRAY-NEXT:         <ul>
-// HTML-ARRAY-NEXT:           <li>
-// HTML-ARRAY-NEXT:             <span>
-// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">Array<T, Size></a>
-// HTML-ARRAY-NEXT:             </span>
-// HTML-ARRAY-NEXT:           </li>
-// HTML-ARRAY-NEXT:           <li>
-// HTML-ARRAY-NEXT:             <span>
-// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">operator[]</a>
-// HTML-ARRAY-NEXT:             </span>
-// HTML-ARRAY-NEXT:           </li>
-// HTML-ARRAY-NEXT:           <li>
-// HTML-ARRAY-NEXT:             <span>
-// HTML-ARRAY-NEXT:               <a href="#{{([0-9A-F]{40})}}">size</a>
-// HTML-ARRAY-NEXT:             </span>
-// HTML-ARRAY-NEXT:           </li>
-// HTML-ARRAY-NEXT:         </ul>
-// HTML-ARRAY-NEXT:       </li>
-// HTML-ARRAY-NEXT:     </ol>
-// HTML-ARRAY-NEXT:   </div>
-// HTML-ARRAY-NEXT: </main>
+// HTML-ARRAY: <h1>class Array</h1>
+// HTML-ARRAY: <p>Defined at line 13 of file ./include\Array.h</p>
+// HTML-ARRAY: <div>
+// HTML-ARRAY:   <div></div>
+// HTML-ARRAY: </div>
+// HTML-ARRAY: <h2 id="Members">Members</h2>
+// HTML-ARRAY: <ul>
+// HTML-ARRAY:   <li>private T[Size] m_data</li>
+// HTML-ARRAY: </ul>
+// HTML-ARRAY: <h2 id="Functions">Functions</h2>
+// HTML-ARRAY: <div>
+// HTML-ARRAY:   <h3 id="{{([0-9A-F]{40})}}">Array<T, Size></h3>
+// HTML-ARRAY:   <p>public void Array<T, Size>()</p>
+// HTML-ARRAY:   <p>Defined at line 8 of file ./src/Array.cpp</p>
+// HTML-ARRAY:   <div>
+// HTML-ARRAY:     <div></div>
+// HTML-ARRAY:     <div>
+// HTML-ARRAY:       <p> Initializes all elements of the array to their default value.</p>
+// HTML-ARRAY:     </div>
+// HTML-ARRAY:   </div>
+// HTML-ARRAY:   <h3 id="{{([0-9A-F]{40})}}">operator[]</h3>
+// HTML-ARRAY:   <p>public T & operator[](int index)</p>
+// HTML-ARRAY:   <p>Defined at line 18 of file ./src/Array.cpp</p>
+// HTML-ARRAY:   <div>
+// HTML-ARRAY:     <div></div>
+// HTML-ARRAY:     <div>
+// HTML-ARRAY:       <p> Array access operator for Array<T, Size> Provides read and write access to elements in the array. This implementation does not perform bounds checking</p>
+// HTML-ARRAY:     </div>
+// HTML-ARRAY:   </div>
+// HTML-ARRAY:   <h3 id="{{([0-9A-F]{40})}}">size</h3>
+// HTML-ARRAY:   <p>public int size()</p>
+// HTML-ARRAY:   <p>Defined at line 28 of file ./src/Array.cpp</p>
+// HTML-ARRAY:   <div>
+// HTML-ARRAY:     <div></div>
+// HTML-ARRAY:     <div>
+// HTML-ARRAY:       <p> Get the size of the array for Array<T, Size></p>
+// HTML-ARRAY:     </div>
+// HTML-ARRAY:   </div>
+// HTML-ARRAY: </div>
 
-// HTML-GLOBAL-INDEX: <!DOCTYPE html>
-// HTML-GLOBAL-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-GLOBAL-INDEX-NEXT: <title>Global Namespace</title>
-// HTML-GLOBAL-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-GLOBAL-INDEX-NEXT: <header id="project-title"></header>
-// HTML-GLOBAL-INDEX-NEXT: <main>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-GLOBAL-INDEX-NEXT:     <h1>Global Namespace</h1>
-// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
-// HTML-GLOBAL-INDEX-NEXT:     <ul>
-// HTML-GLOBAL-INDEX-NEXT:       <li>{{.*}}</li>
-// HTML-GLOBAL-INDEX-NEXT:       <li>{{.*}}</li>
-// HTML-GLOBAL-INDEX-NEXT:     </ul>
-// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-GLOBAL-INDEX-NEXT:     <ul>
-// HTML-GLOBAL-INDEX-NEXT:       <li>
-// HTML-GLOBAL-INDEX-NEXT:         <a href="Array.html">Array</a>
-// HTML-GLOBAL-INDEX-NEXT:       </li>
-// HTML-GLOBAL-INDEX-NEXT:     </ul>
-// HTML-GLOBAL-INDEX-NEXT:   </div>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-GLOBAL-INDEX-NEXT:     <ol>
-// HTML-GLOBAL-INDEX-NEXT:       <li>
-// HTML-GLOBAL-INDEX-NEXT:         <span>
-// HTML-GLOBAL-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
-// HTML-GLOBAL-INDEX-NEXT:         </span>
-// HTML-GLOBAL-INDEX-NEXT:       </li>
-// HTML-GLOBAL-INDEX-NEXT:       <li>
-// HTML-GLOBAL-INDEX-NEXT:         <span>
-// HTML-GLOBAL-INDEX-NEXT:           <a href="#Records">Records</a>
-// HTML-GLOBAL-INDEX-NEXT:         </span>
-// HTML-GLOBAL-INDEX-NEXT:       </li>
-// HTML-GLOBAL-INDEX-NEXT:     </ol>
-// HTML-GLOBAL-INDEX-NEXT:   </div>
-// HTML-GLOBAL-INDEX-NEXT: </main>
+// HTML-GLOBAL-INDEX: <h1>Global Namespace</h1>
+// HTML-GLOBAL-INDEX: <h2 id="Namespaces">Namespaces</h2>
+// HTML-GLOBAL-INDEX: <ul>
+// HTML-GLOBAL-INDEX:   <li>OuterNamespace</li>
+// HTML-GLOBAL-INDEX:   <li>@nonymous_namespace</li>
+// HTML-GLOBAL-INDEX: </ul>
+// HTML-GLOBAL-INDEX: <h2 id="Records">Records</h2>
+// HTML-GLOBAL-INDEX: <ul>
+// HTML-GLOBAL-INDEX:   <li>
+// HTML-GLOBAL-INDEX:     <a href="Array.html">Array</a>
+// HTML-GLOBAL-INDEX:   </li>
+// HTML-GLOBAL-INDEX: </ul>
 
-// HTML-CIRCLE: <!DOCTYPE html>
-// HTML-CIRCLE-NEXT: <meta charset="utf-8"/>
-// HTML-CIRCLE-NEXT: <title>class Circle</title>
-// HTML-CIRCLE-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
-// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
-// HTML-CIRCLE-NEXT: <header id="project-title"></header>
-// HTML-CIRCLE-NEXT: <main>
-// HTML-CIRCLE-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-CIRCLE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-CIRCLE-NEXT:     <h1>class Circle</h1>
-// HTML-CIRCLE-NEXT:     <p>Defined at line 11 of file .{{[\/]}}include{{[\/]}}Circle.h</p>
-// HTML-CIRCLE-NEXT:     <div>
-// HTML-CIRCLE-NEXT:       <div></div>
-// HTML-CIRCLE-NEXT:     </div>
-// HTML-CIRCLE-NEXT:     <p>
-// HTML-CIRCLE-NEXT:       Inherits from
-// HTML-CIRCLE-NEXT:       <a href="Shape.html">Shape</a>
-// HTML-CIRCLE-NEXT:     </p>
-// HTML-CIRCLE-NEXT:     <h2 id="Members">Members</h2>
-// HTML-CIRCLE-NEXT:     <ul>
-// HTML-CIRCLE-NEXT:       <li>private double m_radius</li>
-// HTML-CIRCLE-NEXT:     </ul>
-// HTML-CIRCLE-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-CIRCLE-NEXT:     <div>
-// HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Circle</h3>
-// HTML-CIRCLE-NEXT:       <p>public void Circle(int id, double radius)</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
-// HTML-CIRCLE-NEXT:       <div>
-// HTML-CIRCLE-NEXT:         <div></div>
-// HTML-CIRCLE-NEXT:         <div>
-// HTML-CIRCLE-NEXT:           <p> Initializes a Circle object with a given ID and radius.</p>
-// HTML-CIRCLE-NEXT:         </div>
-// HTML-CIRCLE-NEXT:       </div>
-// HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">draw</h3>
-// HTML-CIRCLE-NEXT:       <p>public void draw()</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 19 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
-// HTML-CIRCLE-NEXT:       <div>
-// HTML-CIRCLE-NEXT:         <div>
-// HTML-CIRCLE-NEXT:           <p> Draws the circle (in this case, prints circle information)</p>
-// HTML-CIRCLE-NEXT:         </div>
-// HTML-CIRCLE-NEXT:         <div>
-// HTML-CIRCLE-NEXT:           <p> 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.</p>
-// HTML-CIRCLE-NEXT:         </div>
-// HTML-CIRCLE-NEXT:       </div>
-// HTML-CIRCLE-NEXT:     </div>
-// HTML-CIRCLE-NEXT:   </div>
-// HTML-CIRCLE-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-CIRCLE-NEXT:     <ol>
-// HTML-CIRCLE-NEXT:       <li>
-// HTML-CIRCLE-NEXT:         <span>
-// HTML-CIRCLE-NEXT:           <a href="#Members">Members</a>
-// HTML-CIRCLE-NEXT:         </span>
-// HTML-CIRCLE-NEXT:       </li>
-// HTML-CIRCLE-NEXT:       <li>
-// HTML-CIRCLE-NEXT:         <span>
-// HTML-CIRCLE-NEXT:           <a href="#Functions">Functions</a>
-// HTML-CIRCLE-NEXT:         </span>
-// HTML-CIRCLE-NEXT:         <ul>
-// HTML-CIRCLE-NEXT:           <li>
-// HTML-CIRCLE-NEXT:             <span>
-// HTML-CIRCLE-NEXT:               <a href="#{{([0-9A-F]{40})}}">Circle</a>
-// HTML-CIRCLE-NEXT:             </span>
-// HTML-CIRCLE-NEXT:           </li>
-// HTML-CIRCLE-NEXT:           <li>
-// HTML-CIRCLE-NEXT:             <span>
-// HTML-CIRCLE-NEXT:               <a href="#{{([0-9A-F]{40})}}">draw</a>
-// HTML-CIRCLE-NEXT:             </span>
-// HTML-CIRCLE-NEXT:           </li>
-// HTML-CIRCLE-NEXT:         </ul>
-// HTML-CIRCLE-NEXT:       </li>
-// HTML-CIRCLE-NEXT:     </ol>
-// HTML-CIRCLE-NEXT:   </div>
-// HTML-CIRCLE-NEXT: </main>
+// HTML-CIRCLE: <h1>class Circle</h1>
+// HTML-CIRCLE: <p>Defined at line 11 of file ./include\Circle.h</p>
+// HTML-CIRCLE: <div>
+// HTML-CIRCLE:   <div></div>
+// HTML-CIRCLE: </div>
+// HTML-CIRCLE: <p>
+// HTML-CIRCLE:   Inherits from
+// HTML-CIRCLE:   <a href="Shape.html">Shape</a>
+// HTML-CIRCLE: </p>
+// HTML-CIRCLE: <h2 id="Members">Members</h2>
+// HTML-CIRCLE: <ul>
+// HTML-CIRCLE:   <li>private double m_radius</li>
+// HTML-CIRCLE: </ul>
+// HTML-CIRCLE: <h2 id="Functions">Functions</h2>
+// HTML-CIRCLE: <div>
+// HTML-CIRCLE:   <h3 id="7E26D8D3972531B03E87C4F71F7BB9CB14A62163">Circle</h3>
+// HTML-CIRCLE:   <p>public void Circle(int id, double radius)</p>
+// HTML-CIRCLE:   <p>Defined at line 9 of file ./src/Circle.cpp</p>
+// HTML-CIRCLE:   <div>
+// HTML-CIRCLE:     <div></div>
+// HTML-CIRCLE:     <div>
+// HTML-CIRCLE:       <p> Initializes a Circle object with a given ID and radius.</p>
+// HTML-CIRCLE:     </div>
+// HTML-CIRCLE:   </div>
+// HTML-CIRCLE:   <h3 id="1C706B81F8827714D0B4D0F2A8DEF4A43123CDA1">draw</h3>
+// HTML-CIRCLE:   <p>public void draw()</p>
+// HTML-CIRCLE:   <p>Defined at line 19 of file ./src/Circle.cpp</p>
+// HTML-CIRCLE:   <div>
+// HTML-CIRCLE:     <div>
+// HTML-CIRCLE:       <p> Draws the circle (in this case, prints circle information)</p>
+// HTML-CIRCLE:     </div>
+// HTML-CIRCLE:     <div>
+// HTML-CIRCLE:       <p> 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.</p>
+// HTML-CIRCLE:     </div>
+// HTML-CIRCLE:   </div>
+// HTML-CIRCLE: </div>
 
-// HTML-INNER-INDEX: <!DOCTYPE html>
-// HTML-INNER-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-INNER-INDEX-NEXT: <title>namespace InnerNamespace</title>
-// HTML-INNER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-INNER-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
-// HTML-INNER-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
-// HTML-INNER-INDEX-NEXT: <header id="project-title"></header>
-// HTML-INNER-INDEX-NEXT: <main>
-// HTML-INNER-INDEX-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-INNER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-INNER-INDEX-NEXT:     <h1>namespace InnerNamespace</h1>
-// HTML-INNER-INDEX-NEXT:     <div>
-// HTML-INNER-INDEX-NEXT:       <div>
-// HTML-INNER-INDEX-NEXT:         <p> Inner namespace</p>
-// HTML-INNER-INDEX-NEXT:       </div>
-// HTML-INNER-INDEX-NEXT:     </div>
-// HTML-INNER-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-INNER-INDEX-NEXT:     <ul>
-// HTML-INNER-INDEX-NEXT:       <li>
-// HTML-INNER-INDEX-NEXT:         <a href="Shape.html">Shape</a>
-// HTML-INNER-INDEX-NEXT:       </li>
-// HTML-INNER-INDEX-NEXT:       <li>
-// HTML-INNER-INDEX-NEXT:         <a href="Circle.html">Circle</a>
-// HTML-INNER-INDEX-NEXT:       </li>
-// HTML-INNER-INDEX-NEXT:     </ul>
-// HTML-INNER-INDEX-NEXT:     <h2 id="Enums">Enums</h2>
-// HTML-INNER-INDEX-NEXT:     <div>
-// HTML-INNER-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">enum class Color</h3>
-// HTML-INNER-INDEX-NEXT:       <ul>
-// HTML-INNER-INDEX-NEXT:         <li>Red</li>
-// HTML-INNER-INDEX-NEXT:         <li>Green</li>
-// HTML-INNER-INDEX-NEXT:         <li>Blue</li>
-// HTML-INNER-INDEX-NEXT:       </ul>
-// HTML-INNER-INDEX-NEXT:       <p>Defined at line 10 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
-// HTML-INNER-INDEX-NEXT:       <div>
-// HTML-INNER-INDEX-NEXT:         <div></div>
-// HTML-INNER-INDEX-NEXT:       </div>
-// HTML-INNER-INDEX-NEXT:     </div>
-// HTML-INNER-INDEX-NEXT:   </div>
-// HTML-INNER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-INNER-INDEX-NEXT:     <ol>
-// HTML-INNER-INDEX-NEXT:       <li>
-// HTML-INNER-INDEX-NEXT:         <span>
-// HTML-INNER-INDEX-NEXT:           <a href="#Records">Records</a>
-// HTML-INNER-INDEX-NEXT:         </span>
-// HTML-INNER-INDEX-NEXT:       </li>
-// HTML-INNER-INDEX-NEXT:       <li>
-// HTML-INNER-INDEX-NEXT:         <span>
-// HTML-INNER-INDEX-NEXT:           <a href="#Enums">Enums</a>
-// HTML-INNER-INDEX-NEXT:         </span>
-// HTML-INNER-INDEX-NEXT:         <ul>
-// HTML-INNER-INDEX-NEXT:           <li>
-// HTML-INNER-INDEX-NEXT:             <span>
-// HTML-INNER-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">Color</a>
-// HTML-INNER-INDEX-NEXT:             </span>
-// HTML-INNER-INDEX-NEXT:           </li>
-// HTML-INNER-INDEX-NEXT:         </ul>
-// HTML-INNER-INDEX-NEXT:       </li>
-// HTML-INNER-INDEX-NEXT:     </ol>
-// HTML-INNER-INDEX-NEXT:   </div>
-// HTML-INNER-INDEX-NEXT: </main>
+// HTML-INNER-INDEX: <h1>namespace InnerNamespace</h1>
+// HTML-INNER-INDEX: <div>
+// HTML-INNER-INDEX:   <div>
+// HTML-INNER-INDEX:     <p> Inner namespace</p>
+// HTML-INNER-INDEX:   </div>
+// HTML-INNER-INDEX: </div>
+// HTML-INNER-INDEX: <h2 id="Records">Records</h2>
+// HTML-INNER-INDEX: <ul>
+// HTML-INNER-INDEX:   <li>
+// HTML-INNER-INDEX:     <a href="Shape.html">Shape</a>
+// HTML-INNER-INDEX:   </li>
+// HTML-INNER-INDEX:   <li>
+// HTML-INNER-INDEX:     <a href="Circle.html">Circle</a>
+// HTML-INNER-INDEX:   </li>
+// HTML-INNER-INDEX: </ul>
+// HTML-INNER-INDEX: <h2 id="Enums">Enums</h2>
+// HTML-INNER-INDEX: <div>
+// HTML-INNER-INDEX:   <h3 id="A4FE515807D3532E918D1CDBD3CA93B91CD190E1">enum class Color</h3>
+// HTML-INNER-INDEX:   <ul>
+// HTML-INNER-INDEX:     <li>Red</li>
+// HTML-INNER-INDEX:     <li>Green</li>
+// HTML-INNER-INDEX:     <li>Blue</li>
+// HTML-INNER-INDEX:   </ul>
+// HTML-INNER-INDEX:   <p>Defined at line 10 of file ./include\Shape.h</p>
+// HTML-INNER-INDEX:   <div>
+// HTML-INNER-INDEX:     <div></div>
+// HTML-INNER-INDEX:   </div>
+// HTML-INNER-INDEX: </div>
 
-// HTML-SHAPE: <!DOCTYPE html>
-// HTML-SHAPE-NEXT: <meta charset="utf-8"/>
-// HTML-SHAPE-NEXT: <title>class Shape</title>
-// HTML-SHAPE-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-SHAPE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
-// HTML-SHAPE-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
-// HTML-SHAPE-NEXT: <header id="project-title"></header>
-// HTML-SHAPE-NEXT: <main>
-// HTML-SHAPE-NEXT:   <div id="sidebar-left" path="OuterNamespace{{[\/]}}InnerNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-SHAPE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-SHAPE-NEXT:     <h1>class Shape</h1>
-// HTML-SHAPE-NEXT:     <p>Defined at line 19 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
-// HTML-SHAPE-NEXT:     <div>
-// HTML-SHAPE-NEXT:       <div></div>
-// HTML-SHAPE-NEXT:     </div>
-// HTML-SHAPE-NEXT:     <h2 id="Members">Members</h2>
-// HTML-SHAPE-NEXT:     <ul>
-// HTML-SHAPE-NEXT:       <li>private int m_id</li>
-// HTML-SHAPE-NEXT:     </ul>
-// HTML-SHAPE-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-SHAPE-NEXT:     <div>
-// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Shape</h3>
-// HTML-SHAPE-NEXT:       <p>public void Shape(int id)</p>
-// HTML-SHAPE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
-// HTML-SHAPE-NEXT:       <div>
-// HTML-SHAPE-NEXT:         <div></div>
-// HTML-SHAPE-NEXT:         <div>
-// HTML-SHAPE-NEXT:           <p> Initializes a Shape object with a given ID.</p>
-// HTML-SHAPE-NEXT:         </div>
-// HTML-SHAPE-NEXT:       </div>
-// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">~Shape</h3>
-// HTML-SHAPE-NEXT:       <p>public void ~Shape()</p>
-// HTML-SHAPE-NEXT:       <p>Defined at line 16 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
-// HTML-SHAPE-NEXT:       <div>
-// HTML-SHAPE-NEXT:         <div></div>
-// HTML-SHAPE-NEXT:         <div>
-// HTML-SHAPE-NEXT:           <p> Ensures proper cleanup of derived classes.</p>
-// HTML-SHAPE-NEXT:         </div>
-// HTML-SHAPE-NEXT:       </div>
-// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">draw</h3>
-// HTML-SHAPE-NEXT:       <p>public void draw()</p>
-// HTML-SHAPE-NEXT:       <div>
-// HTML-SHAPE-NEXT:         <div></div>
-// HTML-SHAPE-NEXT:       </div>
-// HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">getId</h3>
-// HTML-SHAPE-NEXT:       <p>public int getId()</p>
-// HTML-SHAPE-NEXT:       <p>Defined at line 23 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
-// HTML-SHAPE-NEXT:       <div>
-// HTML-SHAPE-NEXT:         <div></div>
-// HTML-SHAPE-NEXT:         <div>
-// HTML-SHAPE-NEXT:           <p> Get unique identifier of the shape</p>
-// HTML-SHAPE-NEXT:         </div>
-// HTML-SHAPE-NEXT:       </div>
-// HTML-SHAPE-NEXT:     </div>
-// HTML-SHAPE-NEXT:   </div>
-// HTML-SHAPE-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-SHAPE-NEXT:     <ol>
-// HTML-SHAPE-NEXT:       <li>
-// HTML-SHAPE-NEXT:         <span>
-// HTML-SHAPE-NEXT:           <a href="#Members">Members</a>
-// HTML-SHAPE-NEXT:         </span>
-// HTML-SHAPE-NEXT:       </li>
-// HTML-SHAPE-NEXT:       <li>
-// HTML-SHAPE-NEXT:         <span>
-// HTML-SHAPE-NEXT:           <a href="#Functions">Functions</a>
-// HTML-SHAPE-NEXT:         </span>
-// HTML-SHAPE-NEXT:         <ul>
-// HTML-SHAPE-NEXT:           <li>
-// HTML-SHAPE-NEXT:             <span>
-// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">Shape</a>
-// HTML-SHAPE-NEXT:             </span>
-// HTML-SHAPE-NEXT:           </li>
-// HTML-SHAPE-NEXT:           <li>
-// HTML-SHAPE-NEXT:             <span>
-// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">~Shape</a>
-// HTML-SHAPE-NEXT:             </span>
-// HTML-SHAPE-NEXT:           </li>
-// HTML-SHAPE-NEXT:           <li>
-// HTML-SHAPE-NEXT:             <span>
-// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">draw</a>
-// HTML-SHAPE-NEXT:             </span>
-// HTML-SHAPE-NEXT:           </li>
-// HTML-SHAPE-NEXT:           <li>
-// HTML-SHAPE-NEXT:             <span>
-// HTML-SHAPE-NEXT:               <a href="#{{([0-9A-F]{40})}}">getId</a>
-// HTML-SHAPE-NEXT:             </span>
-// HTML-SHAPE-NEXT:           </li>
-// HTML-SHAPE-NEXT:         </ul>
-// HTML-SHAPE-NEXT:       </li>
-// HTML-SHAPE-NEXT:     </ol>
-// HTML-SHAPE-NEXT:   </div>
-// HTML-SHAPE-NEXT: </main>
+// HTML-SHAPE: <h1>class Shape</h1>
+// HTML-SHAPE: <p>Defined at line 19 of file ./include\Shape.h</p>
+// HTML-SHAPE: <div>
+// HTML-SHAPE:   <div></div>
+// HTML-SHAPE: </div>
+// HTML-SHAPE: <h2 id="Members">Members</h2>
+// HTML-SHAPE: <ul>
+// HTML-SHAPE:   <li>private int m_id</li>
+// HTML-SHAPE: </ul>
+// HTML-SHAPE: <h2 id="Functions">Functions</h2>
+// HTML-SHAPE: <div>
+// HTML-SHAPE:   <h3 id="ABFA7AB203B23B24A99594914F62759F5AC618E3">Shape</h3>
+// HTML-SHAPE:   <p>public void Shape(int id)</p>
+// HTML-SHAPE:   <p>Defined at line 9 of file ./src/Shape.cpp</p>
+// HTML-SHAPE:   <div>
+// HTML-SHAPE:     <div></div>
+// HTML-SHAPE:     <div>
+// HTML-SHAPE:       <p> Initializes a Shape object with a given ID.</p>
+// HTML-SHAPE:     </div>
+// HTML-SHAPE:   </div>
+// HTML-SHAPE:   <h3 id="8EDF9441A0D4B6D98283B374F259232B685F5229">~Shape</h3>
+// HTML-SHAPE:   <p>public void ~Shape()</p>
+// HTML-SHAPE:   <p>Defined at line 16 of file ./src/Shape.cpp</p>
+// HTML-SHAPE:   <div>
+// HTML-SHAPE:     <div></div>
+// HTML-SHAPE:     <div>
+// HTML-SHAPE:       <p> Ensures proper cleanup of derived classes.</p>
+// HTML-SHAPE:     </div>
+// HTML-SHAPE:   </div>
+// HTML-SHAPE:   <h3 id="9A3BD58E984415F7D9D4CC4DE55B01BC9227A713">draw</h3>
+// HTML-SHAPE:   <p>public void draw()</p>
+// HTML-SHAPE:   <div>
+// HTML-SHAPE:     <div></div>
+// HTML-SHAPE:   </div>
+// HTML-SHAPE:   <h3 id="505BF8791AEB9B44E0E3373F5D750E875156BCCD">getId</h3>
+// HTML-SHAPE:   <p>public int getId()</p>
+// HTML-SHAPE:   <p>Defined at line 23 of file ./src/Shape.cpp</p>
+// HTML-SHAPE:   <div>
+// HTML-SHAPE:     <div></div>
+// HTML-SHAPE:     <div>
+// HTML-SHAPE:       <p> Get unique identifier of the shape</p>
+// HTML-SHAPE:     </div>
+// HTML-SHAPE:   </div>
+// HTML-SHAPE: </div>
 
-// HTML-OUTER-INDEX: <!DOCTYPE html>
-// HTML-OUTER-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-OUTER-INDEX-NEXT: <title>namespace OuterNamespace</title>
-// HTML-OUTER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-OUTER-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-OUTER-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-OUTER-INDEX-NEXT: <header id="project-title"></header>
-// HTML-OUTER-INDEX-NEXT: <main>
-// HTML-OUTER-INDEX-NEXT:   <div id="sidebar-left" path="OuterNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-OUTER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-OUTER-INDEX-NEXT:     <h1>namespace OuterNamespace</h1>
-// HTML-OUTER-INDEX-NEXT:     <div>
-// HTML-OUTER-INDEX-NEXT:       <div>
-// HTML-OUTER-INDEX-NEXT:         <p> Outer namespace</p>
-// HTML-OUTER-INDEX-NEXT:       </div>
-// HTML-OUTER-INDEX-NEXT:     </div>
-// HTML-OUTER-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
-// HTML-OUTER-INDEX-NEXT:     <ul>
-// HTML-OUTER-INDEX-NEXT:       <li>
-// HTML-OUTER-INDEX-NEXT:         <a href="InnerNamespace{{[\/]}}index.html">InnerNamespace</a>
-// HTML-OUTER-INDEX-NEXT:       </li>
-// HTML-OUTER-INDEX-NEXT:     </ul>
-// HTML-OUTER-INDEX-NEXT:   </div>
-// HTML-OUTER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-OUTER-INDEX-NEXT:     <ol>
-// HTML-OUTER-INDEX-NEXT:       <li>
-// HTML-OUTER-INDEX-NEXT:         <span>
-// HTML-OUTER-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
-// HTML-OUTER-INDEX-NEXT:         </span>
-// HTML-OUTER-INDEX-NEXT:       </li>
-// HTML-OUTER-INDEX-NEXT:     </ol>
-// HTML-OUTER-INDEX-NEXT:   </div>
-// HTML-OUTER-INDEX-NEXT: </main>
+// HTML-OUTER-INDEX: <h1>namespace OuterNamespace</h1>
+// HTML-OUTER-INDEX: <div>
+// HTML-OUTER-INDEX:   <div>
+// HTML-OUTER-INDEX:     <p> Outer namespace</p>
+// HTML-OUTER-INDEX:   </div>
+// HTML-OUTER-INDEX: </div>
+// HTML-OUTER-INDEX: <h2 id="Namespaces">Namespaces</h2>
+// HTML-OUTER-INDEX: <ul>
+// HTML-OUTER-INDEX:   <li>
+// HTML-OUTER-INDEX:     <a href="InnerNamespace/index.html">InnerNamespace</a>
+// HTML-OUTER-INDEX:   </li>
+// HTML-OUTER-INDEX: </ul>
 
 // MD-ANON-INDEX: # namespace @nonymous_namespace
 // MD-ANON-INDEX:  Anonymous namespace for utility functions
@@ -698,4 +446,4 @@
 
 // MD-INDEX: #  C/C++ Reference
 // MD-INDEX: * Namespace: [GlobalNamespace](GlobalNamespace)
-// MD-INDEX: * Namespace: [OuterNamespace](OuterNamespace)
+// MD-INDEX: * Namespace: [OuterNamespace](OuterNamespace)
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/basic-project.test b/clang-tools-extra/test/clang-doc/basic-project.test
index 9011d4c3b52f9..bab5f8e1761bc 100644
--- a/clang-tools-extra/test/clang-doc/basic-project.test
+++ b/clang-tools-extra/test/clang-doc/basic-project.test
@@ -1,17 +1,11 @@
+// RUN: rm -rf %t && mkdir -p %t/docs %t/build
 // RUN: sed 's|$test_dir|%/S|g' %S/Inputs/basic-project/database_template.json > %t/build/compile_commands.json
 // RUN: clang-doc --format=html --output=%t/docs --executor=all-TUs %t/build/compile_commands.json
-// RUN: clang-doc --format=md --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/GlobalNamespace/Shape.html -check-prefix=HTML-SHAPE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Calculator.html -check-prefix=HTML-CALC
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.html -check-prefix=HTML-RECTANGLE
 // RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.html -check-prefix=HTML-CIRCLE
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Calculator.md -check-prefix=MD-CALC
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Circle.md -check-prefix=MD-CIRCLE
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Rectangle.md -check-prefix=MD-RECTANGLE
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/Shape.md -check-prefix=MD-SHAPE
-// 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{
@@ -63,15 +57,15 @@
 // HTML-SHAPE: <!DOCTYPE html>
 // HTML-SHAPE-NEXT: <meta charset="utf-8"/>
 // HTML-SHAPE-NEXT: <title>class Shape</title>
-// HTML-SHAPE-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-SHAPE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-SHAPE-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-SHAPE-NEXT: <link rel="stylesheet" href="../clang-doc-default-stylesheet.css"/>
+// HTML-SHAPE-NEXT: <script src="{{.*}}index_json.js"></script>
+// HTML-SHAPE-NEXT: <script src="{{.*}}index.js"></script>
 // HTML-SHAPE-NEXT: <header id="project-title"></header>
 // HTML-SHAPE-NEXT: <main>
 // HTML-SHAPE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-SHAPE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-SHAPE-NEXT:     <h1>class Shape</h1>
-// HTML-SHAPE-NEXT:     <p>Defined at line 8 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
+// HTML-SHAPE-NEXT:     <p>Defined at line 8 of file {{.*}}Shape.h</p>
 // HTML-SHAPE-NEXT:     <div>
 // HTML-SHAPE-NEXT:       <div>
 // HTML-SHAPE-NEXT:         <p> Provides a common interface for different types of shapes.</p>
@@ -81,7 +75,7 @@
 // HTML-SHAPE-NEXT:     <div>
 // HTML-SHAPE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">~Shape</h3>
 // HTML-SHAPE-NEXT:       <p>public void ~Shape()</p>
-// HTML-SHAPE-NEXT:       <p>Defined at line 13 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
+// HTML-SHAPE-NEXT:       <p>Defined at line 13 of file {{.*}}Shape.h</p>
 // HTML-SHAPE-NEXT:       <div>
 // HTML-SHAPE-NEXT:         <div></div>
 // HTML-SHAPE-NEXT:       </div>
@@ -128,9 +122,9 @@
 // HTML-CALC: <!DOCTYPE html>
 // HTML-CALC-NEXT: <meta charset="utf-8"/>
 // HTML-CALC-NEXT: <title>class Calculator</title>
-// HTML-CALC-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-CALC-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-CALC-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-CALC-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
+// HTML-CALC-NEXT: <script src="{{.*}}index_json.js"></script>
+// HTML-CALC-NEXT: <script src="{{.*}}index.js"></script>
 // HTML-CALC-NEXT: <header id="project-title"></header>
 // HTML-CALC-NEXT: <main>
 // HTML-CALC-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
@@ -146,25 +140,25 @@
 // HTML-CALC-NEXT:     <div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">add</h3>
 // HTML-CALC-NEXT:       <p>public int add(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 3 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 3 of file {{.*}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">subtract</h3>
 // HTML-CALC-NEXT:       <p>public int subtract(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 7 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 7 of file {{.*}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">multiply</h3>
 // HTML-CALC-NEXT:       <p>public int multiply(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 11 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 11 of file {{.*}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
 // HTML-CALC-NEXT:       <h3 id="{{([0-9A-F]{40})}}">divide</h3>
 // HTML-CALC-NEXT:       <p>public double divide(int a, int b)</p>
-// HTML-CALC-NEXT:       <p>Defined at line 15 of file .{{[\/]}}src{{[\/]}}Calculator.cpp</p>
+// HTML-CALC-NEXT:       <p>Defined at line 15 of file {{.*}}Calculator.cpp</p>
 // HTML-CALC-NEXT:       <div>
 // HTML-CALC-NEXT:         <div></div>
 // HTML-CALC-NEXT:       </div>
@@ -207,8 +201,8 @@
 // HTML-RECTANGLE-NEXT: <meta charset="utf-8"/>
 // HTML-RECTANGLE-NEXT: <title>class Rectangle</title>
 // HTML-RECTANGLE-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
-// HTML-RECTANGLE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-RECTANGLE-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-RECTANGLE-NEXT: <script src="{{.*}}index_json.js"></script>
+// HTML-RECTANGLE-NEXT: <script src="{{.*}}index.js"></script>
 // HTML-RECTANGLE-NEXT: <header id="project-title"></header>
 // HTML-RECTANGLE-NEXT: <main>
 // HTML-RECTANGLE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
@@ -288,14 +282,14 @@
 // HTML-CIRCLE-NEXT: <meta charset="utf-8"/>
 // HTML-CIRCLE-NEXT: <title>class Circle</title>
 // HTML-CIRCLE-NEXT: <link rel="stylesheet" href="{{.*}}clang-doc-default-stylesheet.css"/>
-// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-CIRCLE-NEXT: <script src="..{{[\/]}}index.js"></script>
+// HTML-CIRCLE-NEXT: <script src="{{.*}}index_json.js"></script>
+// HTML-CIRCLE-NEXT: <script src="{{.*}}index.js"></script>
 // HTML-CIRCLE-NEXT: <header id="project-title"></header>
 // HTML-CIRCLE-NEXT: <main>
 // HTML-CIRCLE-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
 // HTML-CIRCLE-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
 // HTML-CIRCLE-NEXT:     <h1>class Circle</h1>
-// HTML-CIRCLE-NEXT:     <p>Defined at line 10 of file .{{[\/]}}include{{[\/]}}Circle.h</p>
+// HTML-CIRCLE-NEXT:     <p>Defined at line 10 of file {{.*}}Circle.h</p>
 // HTML-CIRCLE-NEXT:     <div>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <p> Represents a circle with a given radius.</p>
@@ -313,19 +307,19 @@
 // HTML-CIRCLE-NEXT:     <div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">Circle</h3>
 // HTML-CIRCLE-NEXT:       <p>public void Circle(double radius)</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 3 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 3 of file {{.*}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">area</h3>
 // HTML-CIRCLE-NEXT:       <p>public double area()</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 5 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 5 of file {{.*}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
 // HTML-CIRCLE-NEXT:       <h3 id="{{([0-9A-F]{40})}}">perimeter</h3>
 // HTML-CIRCLE-NEXT:       <p>public double perimeter()</p>
-// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
+// HTML-CIRCLE-NEXT:       <p>Defined at line 9 of file {{.*}}Circle.cpp</p>
 // HTML-CIRCLE-NEXT:       <div>
 // HTML-CIRCLE-NEXT:         <div></div>
 // HTML-CIRCLE-NEXT:       </div>
@@ -362,113 +356,4 @@
 // HTML-CIRCLE-NEXT:       </li>
 // HTML-CIRCLE-NEXT:     </ol>
 // HTML-CIRCLE-NEXT:   </div>
-// HTML-CIRCLE-NEXT: </main>
-
-// MD-CALC: # class Calculator
-// MD-CALC: *Defined at .{{[\/]}}include{{[\/]}}Calculator.h#8*
-// MD-CALC: **brief** A simple calculator class.
-// MD-CALC:  Provides basic arithmetic operations.
-// MD-CALC: ## Functions
-// MD-CALC: ### add
-// MD-CALC: *public int add(int a, int b)*
-// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#3*
-// MD-CALC: **brief** Adds two integers.
-// MD-CALC: **a** First integer.
-// MD-CALC: **b** Second integer.
-// MD-CALC: **return** int The sum of a and b.
-// MD-CALC: ### subtract
-// MD-CALC: *public int subtract(int a, int b)*
-// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#7*
-// MD-CALC: **brief** Subtracts the second integer from the first.
-// MD-CALC: **a** First integer.
-// MD-CALC: **b** Second integer.
-// MD-CALC: **return** int The result of a - b.
-// MD-CALC: ### multiply
-// MD-CALC: *public int multiply(int a, int b)*
-// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#11*
-// MD-CALC: **brief** Multiplies two integers.
-// MD-CALC: **a** First integer.
-// MD-CALC: **b** Second integer.
-// MD-CALC: **return** int The product of a and b.
-// MD-CALC: ### divide
-// MD-CALC: *public double divide(int a, int b)*
-// MD-CALC: *Defined at .{{[\/]}}src{{[\/]}}Calculator.cpp#15*
-// MD-CALC: **brief** Divides the first integer by the second.
-// MD-CALC: **a** First integer.
-// MD-CALC: **b** Second integer.
-// MD-CALC: **return** double The result of a / b.
-// MD-CALC: **throw**if b is zero.
-
-// MD-CIRCLE: # class Circle
-// MD-CIRCLE: *Defined at .{{[\/]}}include{{[\/]}}Circle.h#10*
-// MD-CIRCLE: **brief** Circle class derived from Shape.
-// MD-CIRCLE:  Represents a circle with a given radius.
-// MD-CIRCLE: Inherits from Shape
-// MD-CIRCLE: ## Members
-// MD-CIRCLE: private double radius_
-// MD-CIRCLE: ## Functions
-// MD-CIRCLE: ### Circle
-// MD-CIRCLE: *public void Circle(double radius)*
-// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#3*
-// MD-CIRCLE: **brief** Constructs a new Circle object.
-// MD-CIRCLE: **radius** Radius of the circle.
-// MD-CIRCLE: ### area
-// MD-CIRCLE: *public double area()*
-// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#5*
-// MD-CIRCLE: **brief** Calculates the area of the circle.
-// MD-CIRCLE: **return** double The area of the circle.
-// MD-CIRCLE: ### perimeter
-// MD-CIRCLE: *public double perimeter()*
-// MD-CIRCLE: *Defined at .{{[\/]}}src{{[\/]}}Circle.cpp#9*
-// MD-CIRCLE: **brief** Calculates the perimeter of the circle.
-// MD-CIRCLE: **return** double The perimeter of the circle.
-
-// MD-RECTANGLE: # class Rectangle
-// MD-RECTANGLE: *Defined at .{{[\/]}}include{{[\/]}}Rectangle.h#10*
-// MD-RECTANGLE: **brief** Rectangle class derived from Shape.
-// MD-RECTANGLE:  Represents a rectangle with a given width and height.
-// MD-RECTANGLE: Inherits from Shape
-// MD-RECTANGLE: ## Members
-// MD-RECTANGLE: private double width_
-// MD-RECTANGLE: private double height_
-// MD-RECTANGLE: ## Functions
-// MD-RECTANGLE: ### Rectangle
-// MD-RECTANGLE: *public void Rectangle(double width, double height)*
-// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#3*
-// MD-RECTANGLE: **brief** Constructs a new Rectangle object.
-// MD-RECTANGLE: **width** Width of the rectangle.
-// MD-RECTANGLE: **height** Height of the rectangle.
-// MD-RECTANGLE: ### area
-// MD-RECTANGLE: *public double area()*
-// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#6*
-// MD-RECTANGLE: **brief** Calculates the area of the rectangle.
-// MD-RECTANGLE: **return** double The area of the rectangle.
-// MD-RECTANGLE: ### perimeter
-// MD-RECTANGLE: *public double perimeter()*
-// MD-RECTANGLE: *Defined at .{{[\/]}}src{{[\/]}}Rectangle.cpp#10*
-// MD-RECTANGLE: **brief** Calculates the perimeter of the rectangle.
-// MD-RECTANGLE: **return** double The perimeter of the rectangle.
-
-// MD-SHAPE: # class Shape
-// MD-SHAPE: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#8*
-// MD-SHAPE: **brief** Abstract base class for shapes.
-// MD-SHAPE:  Provides a common interface for different types of shapes.
-// MD-SHAPE: ## Functions
-// MD-SHAPE: ### ~Shape
-// MD-SHAPE: *public void ~Shape()*
-// MD-SHAPE: *Defined at .{{[\/]}}include{{[\/]}}Shape.h#13*
-// MD-SHAPE: **brief** Virtual destructor.
-// MD-SHAPE: ### area
-// MD-SHAPE: *public double area()*
-// MD-SHAPE: **brief** Calculates the area of the shape.
-// MD-SHAPE: **return** double The area of the shape.
-// MD-SHAPE: ### perimeter
-// MD-SHAPE: *public double perimeter()*
-// MD-SHAPE: **brief** Calculates the perimeter of the shape.
-// MD-SHAPE: **return** double The perimeter of the shape.
-
-// MD-ALL-FILES: # All Files
-// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
-
-// MD-INDEX: #  C/C++ Reference
-// MD-INDEX: * Namespace: [GlobalNamespace](GlobalNamespace)
+// HTML-CIRCLE-NEXT: </main>
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/enum.cpp b/clang-tools-extra/test/clang-doc/enum.cpp
deleted file mode 100644
index 0d0d4605531e3..0000000000000
--- a/clang-tools-extra/test/clang-doc/enum.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-// RUN: clang-doc --format=html --doxygen --output=%t/docs --executor=standalone %s
-// RUN: clang-doc --format=md --doxygen --output=%t/docs --executor=standalone %s
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-INDEX
-
-/**
- * @brief For specifying RGB colors
- */
-enum Color {
-  Red, // Red enums
-  Green, // Green enums
-  Blue // Blue enums
-};
-
-// HTML-INDEX: <!DOCTYPE html>
-// HTML-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-INDEX-NEXT: <title>Global Namespace</title>
-// HTML-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-INDEX-NEXT: <header id="project-title"></header>
-// HTML-INDEX-NEXT: <main>
-// HTML-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-INDEX-NEXT:     <h1>Global Namespace</h1>
-// HTML-INDEX-NEXT:     <h2 id="Enums">Enums</h2>
-// HTML-INDEX-NEXT:     <div>
-// HTML-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">enum Color</h3>
-// HTML-INDEX-NEXT:       <ul>
-// HTML-INDEX-NEXT:         <li>Red</li>
-// HTML-INDEX-NEXT:         <li>Green</li>
-// HTML-INDEX-NEXT:         <li>Blue</li>
-// HTML-INDEX-NEXT:       </ul>
-// HTML-INDEX-NEXT:       <p>Defined at line 11 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
-// HTML-INDEX-NEXT:       <div>
-// HTML-INDEX-NEXT:         <div></div>
-// HTML-INDEX-NEXT:       </div>
-// HTML-INDEX-NEXT:     </div>
-// HTML-INDEX-NEXT:   </div>
-// HTML-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-INDEX-NEXT:     <ol>
-// HTML-INDEX-NEXT:       <li>
-// HTML-INDEX-NEXT:         <span>
-// HTML-INDEX-NEXT:           <a href="#Enums">Enums</a>
-// HTML-INDEX-NEXT:         </span>
-// HTML-INDEX-NEXT:         <ul>
-// HTML-INDEX-NEXT:           <li>
-// HTML-INDEX-NEXT:             <span>
-// HTML-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">Color</a>
-// HTML-INDEX-NEXT:             </span>
-// HTML-INDEX-NEXT:           </li>
-// HTML-INDEX-NEXT:         </ul>
-// HTML-INDEX-NEXT:       </li>
-// HTML-INDEX-NEXT:     </ol>
-// HTML-INDEX-NEXT:   </div>
-// HTML-INDEX-NEXT: </main>
-
-// MD-INDEX: # Global Namespace
-// MD-INDEX: ## Enums
-// MD-INDEX: | enum Color |
-// MD-INDEX: --
-// MD-INDEX: | Red |
-// MD-INDEX: | Green |
-// MD-INDEX: | Blue |
-// MD-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#11*
-// MD-INDEX: **brief** For specifying RGB colors
\ No newline at end of file
diff --git a/clang-tools-extra/test/clang-doc/namespace.cpp b/clang-tools-extra/test/clang-doc/namespace.cpp
deleted file mode 100644
index f6b64294a43f5..0000000000000
--- a/clang-tools-extra/test/clang-doc/namespace.cpp
+++ /dev/null
@@ -1,548 +0,0 @@
-// RUN: clang-doc --format=html --output=%t/docs --executor=standalone %s
-// RUN: clang-doc --format=md --output=%t/docs --executor=standalone %s
-// RUN: FileCheck %s -input-file=%t/docs/index_json.js -check-prefix=JSON-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.html -check-prefix=HTML-ANOTHER-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.html -check-prefix=HTML-ANOTHER-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.html -check-prefix=HTML-GLOBAL-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.html -check-prefix=HTML-NESTED-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/index.html -check-prefix=HTML-NESTED-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/index.html -check-prefix=HTML-PRIMARY-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.html -check-prefix=HTML-PRIMARY-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/@nonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/ClassInAnotherNamespace.md -check-prefix=MD-ANOTHER-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/AnotherNamespace/index.md -check-prefix=MD-ANOTHER-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/GlobalNamespace/index.md -check-prefix=MD-GLOBAL-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.md -check-prefix=MD-NESTED-CLASS
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/NestedNamespace/index.md -check-prefix=MD-NESTED-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/index.md -check-prefix=MD-PRIMARY-INDEX
-// RUN: FileCheck %s -input-file=%t/docs/PrimaryNamespace/ClassInPrimaryNamespace.md -check-prefix=MD-PRIMARY-CLASS
-// 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
-
-// Anonymous Namespace
-namespace
-{
-    void anonFunction() {}
-    class AnonClass {};
-}
-
-// Primary Namespace
-namespace PrimaryNamespace {
-    // Function in PrimaryNamespace
-    void functionInPrimaryNamespace() {}
-
-    // Class in PrimaryNamespace
-    class ClassInPrimaryNamespace {};
-
-    // Nested namespace
-    namespace NestedNamespace {
-        // Function in NestedNamespace
-        void functionInNestedNamespace() {}
-        // Class in NestedNamespace
-        class ClassInNestedNamespace {};
-    }
-}
-
-// AnotherNamespace
-namespace AnotherNamespace {
-    // Function in AnotherNamespace
-    void functionInAnotherNamespace() {}
-    // Class in AnotherNamespace
-    class ClassInAnotherNamespace {};
-}
-
-// 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:           "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:           "Name": "AnonClass",
-// JSON-INDEX-NEXT:           "RefType": "record",
-// JSON-INDEX-NEXT:           "Path": "@nonymous_namespace",
-// 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": "AnotherNamespace",
-// JSON-INDEX-NEXT:       "RefType": "namespace",
-// JSON-INDEX-NEXT:       "Path": "AnotherNamespace",
-// JSON-INDEX-NEXT:       "Children": [
-// JSON-INDEX-NEXT:         {
-// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:           "Name": "ClassInAnotherNamespace",
-// JSON-INDEX-NEXT:           "RefType": "record",
-// JSON-INDEX-NEXT:           "Path": "AnotherNamespace",
-// 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": "GlobalNamespace",
-// JSON-INDEX-NEXT:       "RefType": "namespace",
-// JSON-INDEX-NEXT:       "Path": "GlobalNamespace",
-// JSON-INDEX-NEXT:       "Children": []
-// JSON-INDEX-NEXT:     },
-// JSON-INDEX-NEXT:     {
-// JSON-INDEX-NEXT:       "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:       "Name": "PrimaryNamespace",
-// JSON-INDEX-NEXT:       "RefType": "namespace",
-// JSON-INDEX-NEXT:       "Path": "PrimaryNamespace",
-// JSON-INDEX-NEXT:       "Children": [
-// JSON-INDEX-NEXT:         {
-// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:           "Name": "ClassInPrimaryNamespace",
-// JSON-INDEX-NEXT:           "RefType": "record",
-// JSON-INDEX-NEXT:           "Path": "PrimaryNamespace",
-// JSON-INDEX-NEXT:           "Children": []
-// JSON-INDEX-NEXT:         },
-// JSON-INDEX-NEXT:         {
-// JSON-INDEX-NEXT:           "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:           "Name": "NestedNamespace",
-// JSON-INDEX-NEXT:           "RefType": "namespace",
-// JSON-INDEX-NEXT:           "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
-// JSON-INDEX-NEXT:           "Children": [
-// JSON-INDEX-NEXT:             {
-// JSON-INDEX-NEXT:               "USR": "{{([0-9A-F]{40})}}",
-// JSON-INDEX-NEXT:               "Name": "ClassInNestedNamespace",
-// JSON-INDEX-NEXT:               "RefType": "record",
-// JSON-INDEX-NEXT:               "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
-// 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-CLASS: <!DOCTYPE html>
-// HTML-ANON-CLASS-NEXT: <meta charset="utf-8"/>
-// HTML-ANON-CLASS-NEXT: <title>class AnonClass</title>
-// HTML-ANON-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-ANON-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-ANON-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-ANON-CLASS-NEXT: <header id="project-title"></header>
-// HTML-ANON-CLASS-NEXT: <main>
-// HTML-ANON-CLASS-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-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-ANON-CLASS-NEXT:     <h1>class AnonClass</h1>
-// HTML-ANON-CLASS-NEXT:     <p>Defined at line 31 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-ANON-CLASS-NEXT:   </div>
-// HTML-ANON-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
-// HTML-ANON-CLASS-NEXT: </main>
-
-// 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</p>
-// HTML-ANON-INDEX-NEXT:       </div>
-// HTML-ANON-INDEX-NEXT:     </div>
-// HTML-ANON-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-ANON-INDEX-NEXT:     <ul>
-// HTML-ANON-INDEX-NEXT:       <li>
-// HTML-ANON-INDEX-NEXT:         <a href="AnonClass.html">AnonClass</a>
-// HTML-ANON-INDEX-NEXT:       </li>
-// HTML-ANON-INDEX-NEXT:     </ul>
-// HTML-ANON-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-ANON-INDEX-NEXT:     <div>
-// HTML-ANON-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">anonFunction</h3>
-// HTML-ANON-INDEX-NEXT:       <p>void anonFunction()</p>
-// HTML-ANON-INDEX-NEXT:       <p>Defined at line 30 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// 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="#Records">Records</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="#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})}}">anonFunction</a>
-// HTML-ANON-INDEX-NEXT:             </span>
-// HTML-ANON-INDEX-NEXT:           </li>
-// HTML-ANON-INDEX-NEXT:         </ul>
-// HTML-ANON-INDEX-NEXT:       </li>
-// HTML-ANON-INDEX-NEXT:     </ol>
-// HTML-ANON-INDEX-NEXT:   </div>
-// HTML-ANON-INDEX-NEXT: </main>
-
-// HTML-ANOTHER-CLASS: <!DOCTYPE html>
-// HTML-ANOTHER-CLASS-NEXT: <meta charset="utf-8"/>
-// HTML-ANOTHER-CLASS-NEXT: <title>class ClassInAnotherNamespace</title>
-// HTML-ANOTHER-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-ANOTHER-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-ANOTHER-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-ANOTHER-CLASS-NEXT: <header id="project-title"></header>
-// HTML-ANOTHER-CLASS-NEXT: <main>
-// HTML-ANOTHER-CLASS-NEXT:   <div id="sidebar-left" path="AnotherNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-ANOTHER-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-ANOTHER-CLASS-NEXT:     <h1>class ClassInAnotherNamespace</h1>
-// HTML-ANOTHER-CLASS-NEXT:     <p>Defined at line 56 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-ANOTHER-CLASS-NEXT:     <div>
-// HTML-ANOTHER-CLASS-NEXT:       <div>
-// HTML-ANOTHER-CLASS-NEXT:         <p> Class in AnotherNamespace</p>
-// HTML-ANOTHER-CLASS-NEXT:       </div>
-// HTML-ANOTHER-CLASS-NEXT:     </div>
-// HTML-ANOTHER-CLASS-NEXT:   </div>
-// HTML-ANOTHER-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
-// HTML-ANOTHER-CLASS-NEXT: </main>
-
-// HTML-ANOTHER-INDEX: <!DOCTYPE html>
-// HTML-ANOTHER-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-ANOTHER-INDEX-NEXT: <title>namespace AnotherNamespace</title>
-// HTML-ANOTHER-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-ANOTHER-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-ANOTHER-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-ANOTHER-INDEX-NEXT: <header id="project-title"></header>
-// HTML-ANOTHER-INDEX-NEXT: <main>
-// HTML-ANOTHER-INDEX-NEXT:   <div id="sidebar-left" path="AnotherNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-ANOTHER-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-ANOTHER-INDEX-NEXT:     <h1>namespace AnotherNamespace</h1>
-// HTML-ANOTHER-INDEX-NEXT:     <div>
-// HTML-ANOTHER-INDEX-NEXT:       <div>
-// HTML-ANOTHER-INDEX-NEXT:         <p> AnotherNamespace</p>
-// HTML-ANOTHER-INDEX-NEXT:       </div>
-// HTML-ANOTHER-INDEX-NEXT:     </div>
-// HTML-ANOTHER-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-ANOTHER-INDEX-NEXT:     <ul>
-// HTML-ANOTHER-INDEX-NEXT:       <li>
-// HTML-ANOTHER-INDEX-NEXT:         <a href="ClassInAnotherNamespace.html">ClassInAnotherNamespace</a>
-// HTML-ANOTHER-INDEX-NEXT:       </li>
-// HTML-ANOTHER-INDEX-NEXT:     </ul>
-// HTML-ANOTHER-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-ANOTHER-INDEX-NEXT:     <div>
-// HTML-ANOTHER-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInAnotherNamespace</h3>
-// HTML-ANOTHER-INDEX-NEXT:       <p>void functionInAnotherNamespace()</p>
-// HTML-ANOTHER-INDEX-NEXT:       <p>Defined at line 54 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-ANOTHER-INDEX-NEXT:       <div>
-// HTML-ANOTHER-INDEX-NEXT:         <div>
-// HTML-ANOTHER-INDEX-NEXT:           <p> Function in AnotherNamespace</p>
-// HTML-ANOTHER-INDEX-NEXT:         </div>
-// HTML-ANOTHER-INDEX-NEXT:       </div>
-// HTML-ANOTHER-INDEX-NEXT:     </div>
-// HTML-ANOTHER-INDEX-NEXT:   </div>
-// HTML-ANOTHER-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-ANOTHER-INDEX-NEXT:     <ol>
-// HTML-ANOTHER-INDEX-NEXT:       <li>
-// HTML-ANOTHER-INDEX-NEXT:         <span>
-// HTML-ANOTHER-INDEX-NEXT:           <a href="#Records">Records</a>
-// HTML-ANOTHER-INDEX-NEXT:         </span>
-// HTML-ANOTHER-INDEX-NEXT:       </li>
-// HTML-ANOTHER-INDEX-NEXT:       <li>
-// HTML-ANOTHER-INDEX-NEXT:         <span>
-// HTML-ANOTHER-INDEX-NEXT:           <a href="#Functions">Functions</a>
-// HTML-ANOTHER-INDEX-NEXT:         </span>
-// HTML-ANOTHER-INDEX-NEXT:         <ul>
-// HTML-ANOTHER-INDEX-NEXT:           <li>
-// HTML-ANOTHER-INDEX-NEXT:             <span>
-// HTML-ANOTHER-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInAnotherNamespace</a>
-// HTML-ANOTHER-INDEX-NEXT:             </span>
-// HTML-ANOTHER-INDEX-NEXT:           </li>
-// HTML-ANOTHER-INDEX-NEXT:         </ul>
-// HTML-ANOTHER-INDEX-NEXT:       </li>
-// HTML-ANOTHER-INDEX-NEXT:     </ol>
-// HTML-ANOTHER-INDEX-NEXT:   </div>
-// HTML-ANOTHER-INDEX-NEXT: </main>
-
-// HTML-GLOBAL-INDEX: <!DOCTYPE html>
-// HTML-GLOBAL-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-GLOBAL-INDEX-NEXT: <title>Global Namespace</title>
-// HTML-GLOBAL-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-GLOBAL-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-GLOBAL-INDEX-NEXT: <header id="project-title"></header>
-// HTML-GLOBAL-INDEX-NEXT: <main>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-left" path="GlobalNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-GLOBAL-INDEX-NEXT:     <h1>Global Namespace</h1>
-// HTML-GLOBAL-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
-// HTML-GLOBAL-INDEX-NEXT:     <ul>
-// HTML-GLOBAL-INDEX-NEXT:       <li>@nonymous_namespace</li>
-// HTML-GLOBAL-INDEX-NEXT:       <li>PrimaryNamespace</li>
-// HTML-GLOBAL-INDEX-NEXT:       <li>AnotherNamespace</li>
-// HTML-GLOBAL-INDEX-NEXT:     </ul>
-// HTML-GLOBAL-INDEX-NEXT:   </div>
-// HTML-GLOBAL-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-GLOBAL-INDEX-NEXT:     <ol>
-// HTML-GLOBAL-INDEX-NEXT:       <li>
-// HTML-GLOBAL-INDEX-NEXT:         <span>
-// HTML-GLOBAL-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
-// HTML-GLOBAL-INDEX-NEXT:         </span>
-// HTML-GLOBAL-INDEX-NEXT:       </li>
-// HTML-GLOBAL-INDEX-NEXT:     </ol>
-// HTML-GLOBAL-INDEX-NEXT:   </div>
-// HTML-GLOBAL-INDEX-NEXT: </main>
-
-// HTML-NESTED-CLASS: <!DOCTYPE html>
-// HTML-NESTED-CLASS-NEXT: <meta charset="utf-8"/>
-// HTML-NESTED-CLASS-NEXT: <title>class ClassInNestedNamespace</title>
-// HTML-NESTED-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-NESTED-CLASS-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
-// HTML-NESTED-CLASS-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
-// HTML-NESTED-CLASS-NEXT: <header id="project-title"></header>
-// HTML-NESTED-CLASS-NEXT: <main>
-// HTML-NESTED-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace\NestedNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-NESTED-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-NESTED-CLASS-NEXT:     <h1>class ClassInNestedNamespace</h1>
-// HTML-NESTED-CLASS-NEXT:     <p>Defined at line 47 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-NESTED-CLASS-NEXT:     <div>
-// HTML-NESTED-CLASS-NEXT:       <div>
-// HTML-NESTED-CLASS-NEXT:         <p> Class in NestedNamespace</p>
-// HTML-NESTED-CLASS-NEXT:       </div>
-// HTML-NESTED-CLASS-NEXT:     </div>
-// HTML-NESTED-CLASS-NEXT:   </div>
-// HTML-NESTED-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
-// HTML-NESTED-CLASS-NEXT: </main>
-
-// HTML-NESTED-INDEX: <!DOCTYPE html>
-// HTML-NESTED-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-NESTED-INDEX-NEXT: <title>namespace NestedNamespace</title>
-// HTML-NESTED-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-NESTED-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index_json.js"></script>
-// HTML-NESTED-INDEX-NEXT: <script src="..{{[\/]}}..{{[\/]}}index.js"></script>
-// HTML-NESTED-INDEX-NEXT: <header id="project-title"></header>
-// HTML-NESTED-INDEX-NEXT: <main>
-// HTML-NESTED-INDEX-NEXT:   <div id="sidebar-left" path="PrimaryNamespace{{[\/]}}NestedNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-NESTED-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-NESTED-INDEX-NEXT:     <h1>namespace NestedNamespace</h1>
-// HTML-NESTED-INDEX-NEXT:     <div>
-// HTML-NESTED-INDEX-NEXT:       <div>
-// HTML-NESTED-INDEX-NEXT:         <p> Nested namespace</p>
-// HTML-NESTED-INDEX-NEXT:       </div>
-// HTML-NESTED-INDEX-NEXT:     </div>
-// HTML-NESTED-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-NESTED-INDEX-NEXT:     <ul>
-// HTML-NESTED-INDEX-NEXT:       <li>
-// HTML-NESTED-INDEX-NEXT:         <a href="ClassInNestedNamespace.html">ClassInNestedNamespace</a>
-// HTML-NESTED-INDEX-NEXT:       </li>
-// HTML-NESTED-INDEX-NEXT:     </ul>
-// HTML-NESTED-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-NESTED-INDEX-NEXT:     <div>
-// HTML-NESTED-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInNestedNamespace</h3>
-// HTML-NESTED-INDEX-NEXT:       <p>void functionInNestedNamespace()</p>
-// HTML-NESTED-INDEX-NEXT:       <p>Defined at line 45 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-NESTED-INDEX-NEXT:       <div>
-// HTML-NESTED-INDEX-NEXT:         <div>
-// HTML-NESTED-INDEX-NEXT:           <p> Function in NestedNamespace</p>
-// HTML-NESTED-INDEX-NEXT:         </div>
-// HTML-NESTED-INDEX-NEXT:       </div>
-// HTML-NESTED-INDEX-NEXT:     </div>
-// HTML-NESTED-INDEX-NEXT:   </div>
-// HTML-NESTED-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-NESTED-INDEX-NEXT:     <ol>
-// HTML-NESTED-INDEX-NEXT:       <li>
-// HTML-NESTED-INDEX-NEXT:         <span>
-// HTML-NESTED-INDEX-NEXT:           <a href="#Records">Records</a>
-// HTML-NESTED-INDEX-NEXT:         </span>
-// HTML-NESTED-INDEX-NEXT:       </li>
-// HTML-NESTED-INDEX-NEXT:       <li>
-// HTML-NESTED-INDEX-NEXT:         <span>
-// HTML-NESTED-INDEX-NEXT:           <a href="#Functions">Functions</a>
-// HTML-NESTED-INDEX-NEXT:         </span>
-// HTML-NESTED-INDEX-NEXT:         <ul>
-// HTML-NESTED-INDEX-NEXT:           <li>
-// HTML-NESTED-INDEX-NEXT:             <span>
-// HTML-NESTED-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInNestedNamespace</a>
-// HTML-NESTED-INDEX-NEXT:             </span>
-// HTML-NESTED-INDEX-NEXT:           </li>
-// HTML-NESTED-INDEX-NEXT:         </ul>
-// HTML-NESTED-INDEX-NEXT:       </li>
-// HTML-NESTED-INDEX-NEXT:     </ol>
-// HTML-NESTED-INDEX-NEXT:   </div>
-// HTML-NESTED-INDEX-NEXT: </main>
-
-// HTML-PRIMARY-CLASS: <!DOCTYPE html>
-// HTML-PRIMARY-CLASS-NEXT: <meta charset="utf-8"/>
-// HTML-PRIMARY-CLASS-NEXT: <title>class ClassInPrimaryNamespace</title>
-// HTML-PRIMARY-CLASS-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-PRIMARY-CLASS-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-PRIMARY-CLASS-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-PRIMARY-CLASS-NEXT: <header id="project-title"></header>
-// HTML-PRIMARY-CLASS-NEXT: <main>
-// HTML-PRIMARY-CLASS-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-PRIMARY-CLASS-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-PRIMARY-CLASS-NEXT:     <h1>class ClassInPrimaryNamespace</h1>
-// HTML-PRIMARY-CLASS-NEXT:     <p>Defined at line 40 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-PRIMARY-CLASS-NEXT:     <div>
-// HTML-PRIMARY-CLASS-NEXT:       <div>
-// HTML-PRIMARY-CLASS-NEXT:         <p> Class in PrimaryNamespace</p>
-// HTML-PRIMARY-CLASS-NEXT:       </div>
-// HTML-PRIMARY-CLASS-NEXT:     </div>
-// HTML-PRIMARY-CLASS-NEXT:   </div>
-// HTML-PRIMARY-CLASS-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right"></div>
-// HTML-PRIMARY-CLASS-NEXT: </main>
-
-// HTML-PRIMARY-INDEX: <!DOCTYPE html>
-// HTML-PRIMARY-INDEX-NEXT: <meta charset="utf-8"/>
-// HTML-PRIMARY-INDEX-NEXT: <title>namespace PrimaryNamespace</title>
-// HTML-PRIMARY-INDEX-NEXT: <link rel="stylesheet" href="..{{[\/]}}clang-doc-default-stylesheet.css"/>
-// HTML-PRIMARY-INDEX-NEXT: <script src="..{{[\/]}}index_json.js"></script>
-// HTML-PRIMARY-INDEX-NEXT: <script src="..{{[\/]}}index.js"></script>
-// HTML-PRIMARY-INDEX-NEXT: <header id="project-title"></header>
-// HTML-PRIMARY-INDEX-NEXT: <main>
-// HTML-PRIMARY-INDEX-NEXT:   <div id="sidebar-left" path="PrimaryNamespace" class="col-xs-6 col-sm-3 col-md-2 sidebar sidebar-offcanvas-left"></div>
-// HTML-PRIMARY-INDEX-NEXT:   <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
-// HTML-PRIMARY-INDEX-NEXT:     <h1>namespace PrimaryNamespace</h1>
-// HTML-PRIMARY-INDEX-NEXT:     <div>
-// HTML-PRIMARY-INDEX-NEXT:       <div>
-// HTML-PRIMARY-INDEX-NEXT:         <p> Primary Namespace</p>
-// HTML-PRIMARY-INDEX-NEXT:       </div>
-// HTML-PRIMARY-INDEX-NEXT:     </div>
-// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Namespaces">Namespaces</h2>
-// HTML-PRIMARY-INDEX-NEXT:     <ul>
-// HTML-PRIMARY-INDEX-NEXT:       <li>
-// HTML-PRIMARY-INDEX-NEXT:         <a href="NestedNamespace{{[\/]}}index.html">NestedNamespace</a>
-// HTML-PRIMARY-INDEX-NEXT:       </li>
-// HTML-PRIMARY-INDEX-NEXT:     </ul>
-// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Records">Records</h2>
-// HTML-PRIMARY-INDEX-NEXT:     <ul>
-// HTML-PRIMARY-INDEX-NEXT:       <li>
-// HTML-PRIMARY-INDEX-NEXT:         <a href="ClassInPrimaryNamespace.html">ClassInPrimaryNamespace</a>
-// HTML-PRIMARY-INDEX-NEXT:       </li>
-// HTML-PRIMARY-INDEX-NEXT:     </ul>
-// HTML-PRIMARY-INDEX-NEXT:     <h2 id="Functions">Functions</h2>
-// HTML-PRIMARY-INDEX-NEXT:     <div>
-// HTML-PRIMARY-INDEX-NEXT:       <h3 id="{{([0-9A-F]{40})}}">functionInPrimaryNamespace</h3>
-// HTML-PRIMARY-INDEX-NEXT:       <p>void functionInPrimaryNamespace()</p>
-// HTML-PRIMARY-INDEX-NEXT:       <p>Defined at line 37 of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
-// HTML-PRIMARY-INDEX-NEXT:       <div>
-// HTML-PRIMARY-INDEX-NEXT:         <div>
-// HTML-PRIMARY-INDEX-NEXT:           <p> Function in PrimaryNamespace</p>
-// HTML-PRIMARY-INDEX-NEXT:         </div>
-// HTML-PRIMARY-INDEX-NEXT:       </div>
-// HTML-PRIMARY-INDEX-NEXT:     </div>
-// HTML-PRIMARY-INDEX-NEXT:   </div>
-// HTML-PRIMARY-INDEX-NEXT:   <div id="sidebar-right" class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
-// HTML-PRIMARY-INDEX-NEXT:     <ol>
-// HTML-PRIMARY-INDEX-NEXT:       <li>
-// HTML-PRIMARY-INDEX-NEXT:         <span>
-// HTML-PRIMARY-INDEX-NEXT:           <a href="#Namespaces">Namespaces</a>
-// HTML-PRIMARY-INDEX-NEXT:         </span>
-// HTML-PRIMARY-INDEX-NEXT:       </li>
-// HTML-PRIMARY-INDEX-NEXT:       <li>
-// HTML-PRIMARY-INDEX-NEXT:         <span>
-// HTML-PRIMARY-INDEX-NEXT:           <a href="#Records">Records</a>
-// HTML-PRIMARY-INDEX-NEXT:         </span>
-// HTML-PRIMARY-INDEX-NEXT:       </li>
-// HTML-PRIMARY-INDEX-NEXT:       <li>
-// HTML-PRIMARY-INDEX-NEXT:         <span>
-// HTML-PRIMARY-INDEX-NEXT:           <a href="#Functions">Functions</a>
-// HTML-PRIMARY-INDEX-NEXT:         </span>
-// HTML-PRIMARY-INDEX-NEXT:         <ul>
-// HTML-PRIMARY-INDEX-NEXT:           <li>
-// HTML-PRIMARY-INDEX-NEXT:             <span>
-// HTML-PRIMARY-INDEX-NEXT:               <a href="#{{([0-9A-F]{40})}}">functionInPrimaryNamespace</a>
-// HTML-PRIMARY-INDEX-NEXT:             </span>
-// HTML-PRIMARY-INDEX-NEXT:           </li>
-// HTML-PRIMARY-INDEX-NEXT:         </ul>
-// HTML-PRIMARY-INDEX-NEXT:       </li>
-// HTML-PRIMARY-INDEX-NEXT:     </ol>
-// HTML-PRIMARY-INDEX-NEXT:   </div>
-// HTML-PRIMARY-INDEX-NEXT: </main>
-
-// MD-ANON-CLASS: # class AnonClass
-// MD-ANON-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#31*
-
-// MD-ANON-INDEX: # namespace @nonymous_namespace
-// MD-ANON-INDEX:  Anonymous Namespace
-// MD-ANON-INDEX: ## Records
-// MD-ANON-INDEX: * [AnonClass](AnonClass.md)
-// MD-ANON-INDEX: ## Functions
-// MD-ANON-INDEX: ### anonFunction
-// MD-ANON-INDEX: *void anonFunction()*
-// MD-ANON-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#30*
-
-// MD-ANOTHER-CLASS: # class ClassInAnotherNamespace
-// MD-ANOTHER-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#56*
-// MD-ANOTHER-CLASS:  Class in AnotherNamespace
-
-// MD-ANOTHER-INDEX: # namespace AnotherNamespace
-// MD-ANOTHER-INDEX: AnotherNamespace
-// MD-ANOTHER-INDEX: ## Records
-// MD-ANOTHER-INDEX: * [ClassInAnotherNamespace](ClassInAnotherNamespace.md)
-// MD-ANOTHER-INDEX: ## Functions
-// MD-ANOTHER-INDEX: ### functionInAnotherNamespace
-// MD-ANOTHER-INDEX: *void functionInAnotherNamespace()*
-// MD-ANOTHER-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#54*
-// MD-ANOTHER-INDEX: Function in AnotherNamespace
-
-// MD-GLOBAL-INDEX: # Global Namespace
-// MD-GLOBAL-INDEX: ## Namespaces
-// MD-GLOBAL-INDEX: * [@nonymous_namespace](..{{[\/]}}@nonymous_namespace{{[\/]}}index.md)
-// MD-GLOBAL-INDEX: * [PrimaryNamespace](..{{[\/]}}PrimaryNamespace{{[\/]}}index.md)
-// MD-GLOBAL-INDEX: * [AnotherNamespace](..{{[\/]}}AnotherNamespace{{[\/]}}index.md)
-
-// MD-NESTED-CLASS: # class ClassInNestedNamespace
-// MD-NESTED-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#47*
-// MD-NESTED-CLASS: Class in NestedNamespace
-
-// MD-NESTED-INDEX: # namespace NestedNamespace
-// MD-NESTED-INDEX: Nested namespace
-// MD-NESTED-INDEX: ## Records
-// MD-NESTED-INDEX: * [ClassInNestedNamespace](ClassInNestedNamespace.md)
-// MD-NESTED-INDEX: ## Functions
-// MD-NESTED-INDEX: ### functionInNestedNamespace
-// MD-NESTED-INDEX: *void functionInNestedNamespace()*
-// MD-NESTED-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#45*
-// MD-NESTED-INDEX: Function in NestedNamespace
-
-// MD-PRIMARY-CLASS: # class ClassInPrimaryNamespace
-// MD-PRIMARY-CLASS: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#40*
-// MD-PRIMARY-CLASS: Class in PrimaryNamespace
-
-// MD-PRIMARY-INDEX: # namespace PrimaryNamespace
-// MD-PRIMARY-INDEX:  Primary Namespace
-// MD-PRIMARY-INDEX: ## Namespaces
-// MD-PRIMARY-INDEX: * [NestedNamespace](NestedNamespace{{[\/]}}index.md)
-// MD-PRIMARY-INDEX: ## Records
-// MD-PRIMARY-INDEX: * [ClassInPrimaryNamespace](ClassInPrimaryNamespace.md)
-// MD-PRIMARY-INDEX: ## Functions
-// MD-PRIMARY-INDEX: ### functionInPrimaryNamespace
-// MD-PRIMARY-INDEX: *void functionInPrimaryNamespace()*
-// MD-PRIMARY-INDEX: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#37*
-// MD-PRIMARY-INDEX:  Function in PrimaryNamespace
-
-// MD-ALL-FILES: # All Files
-// MD-ALL-FILES: ## [@nonymous_namespace](@nonymous_namespace{{[\/]}}index.md)
-// MD-ALL-FILES: ## [AnotherNamespace](AnotherNamespace{{[\/]}}index.md)
-// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
-// MD-ALL-FILES: ## [PrimaryNamespace](PrimaryNamespace{{[\/]}}index.md)
-
-// MD-INDEX: #  C/C++ Reference
-// MD-INDEX: * Namespace: [@nonymous_namespace](@nonymous_namespace)
-// MD-INDEX: * Namespace: [AnotherNamespace](AnotherNamespace)
-// MD-INDEX: * Namespace: [PrimaryNamespace](PrimaryNamespace)
\ No newline at end of file

>From defda73d82a881909b82b99ae8aa76f8fdb057e9 Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Wed, 3 Jul 2024 22:43:15 -0400
Subject: [PATCH 5/6] [clang-doc] add internal comments

---
 .../test/clang-doc/Inputs/advance-project/src/Array.cpp       | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

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
index a871509cf2b4e..18b3bc0005c4d 100644
--- 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
@@ -17,7 +17,9 @@ Array<T, Size>::Array() {
 */
 template <typename T, int Size>
 T& Array<T, Size>::operator[](int index) {
-   // Implementation stub
+   /**
+    * @brief internal comment
+    */
    static T dummy;
    return dummy;
 }

>From 3ffd56a77fbc55f110571e711e51447ba7a14716 Mon Sep 17 00:00:00 2001
From: PeterChou1 <peter.chou at mail.utoronto.ca>
Date: Wed, 3 Jul 2024 23:23:46 -0400
Subject: [PATCH 6/6] [clang-doc] add regex to test

---
 .../test/clang-doc/advance-project.test       | 44 +++++++++----------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/clang-tools-extra/test/clang-doc/advance-project.test b/clang-tools-extra/test/clang-doc/advance-project.test
index 6e499baabe7da..b6ad232394f84 100644
--- a/clang-tools-extra/test/clang-doc/advance-project.test
+++ b/clang-tools-extra/test/clang-doc/advance-project.test
@@ -90,25 +90,25 @@
 // HTML-ANON-INDEX: </div>
 // HTML-ANON-INDEX: <h2 id="Functions">Functions</h2>
 // HTML-ANON-INDEX: <div>
-// HTML-ANON-INDEX:   <h3 id="6C29E21B8E17CC2B7644472BEEA8AE41173AC8A5">getRandomNumber</h3>
+// HTML-ANON-INDEX:   <h3 id="{{([0-9A-F]{40})}}">getRandomNumber</h3>
 // HTML-ANON-INDEX:   <p>int getRandomNumber()</p>
-// HTML-ANON-INDEX:   <p>Defined at line 9 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
 // HTML-ANON-INDEX:   <div>
 // HTML-ANON-INDEX:     <div></div>
 // HTML-ANON-INDEX:     <div>
 // HTML-ANON-INDEX:       <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:     </div>
 // HTML-ANON-INDEX:   </div>
-// HTML-ANON-INDEX:   <h3 id="C880E378D7684B69ACB874F378AE97484CFC8A31">intToString</h3>
+// HTML-ANON-INDEX:   <h3 id="{{([0-9A-F]{40})}}">intToString</h3>
 // HTML-ANON-INDEX:   <p>void intToString(int value, char * buffer, int & index)</p>
-// HTML-ANON-INDEX:   <p>Defined at line 18 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <p>Defined at line 18 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
 // HTML-ANON-INDEX:   <div>
 // HTML-ANON-INDEX:     <div></div>
 // HTML-ANON-INDEX:     <div>
 // HTML-ANON-INDEX:       <p> Converts an integer value to its string representation and stores the result in the provided buffer.</p>
 // HTML-ANON-INDEX:     </div>
 // HTML-ANON-INDEX:   </div>
-// HTML-ANON-INDEX:   <h3 id="BF4741DC50474C9F02654E187CF39DF4ACFC4C03">doubleToString</h3>
+// HTML-ANON-INDEX:   <h3 id="{{([0-9A-F]{40})}}">doubleToString</h3>
 // HTML-ANON-INDEX:   <p>void doubleToString(double value, char * buffer, int & index)</p>
 // HTML-ANON-INDEX:   <p>Defined at line 26 of file ./src/Utils.cpp</p>
 // HTML-ANON-INDEX:   <div>
@@ -117,9 +117,9 @@
 // HTML-ANON-INDEX:       <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:     </div>
 // HTML-ANON-INDEX:   </div>
-// HTML-ANON-INDEX:   <h3 id="8DFD5FCED322C10A7E16339E1CADBB4809B1BCB8">print</h3>
+// HTML-ANON-INDEX:   <h3 id="{{([0-9A-F]{40})}}">print</h3>
 // HTML-ANON-INDEX:   <p>void print(const char * str)</p>
-// HTML-ANON-INDEX:   <p>Defined at line 33 of file ./src/Utils.cpp</p>
+// HTML-ANON-INDEX:   <p>Defined at line 33 of file .{{[\/]}}src{{[\/]}}Utils.cpp</p>
 // HTML-ANON-INDEX:   <div>
 // HTML-ANON-INDEX:     <div></div>
 // HTML-ANON-INDEX:     <div>
@@ -141,7 +141,7 @@
 // HTML-ARRAY: <div>
 // HTML-ARRAY:   <h3 id="{{([0-9A-F]{40})}}">Array<T, Size></h3>
 // HTML-ARRAY:   <p>public void Array<T, Size>()</p>
-// HTML-ARRAY:   <p>Defined at line 8 of file ./src/Array.cpp</p>
+// HTML-ARRAY:   <p>Defined at line 8 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
 // HTML-ARRAY:   <div>
 // HTML-ARRAY:     <div></div>
 // HTML-ARRAY:     <div>
@@ -150,7 +150,7 @@
 // HTML-ARRAY:   </div>
 // HTML-ARRAY:   <h3 id="{{([0-9A-F]{40})}}">operator[]</h3>
 // HTML-ARRAY:   <p>public T & operator[](int index)</p>
-// HTML-ARRAY:   <p>Defined at line 18 of file ./src/Array.cpp</p>
+// HTML-ARRAY:   <p>Defined at line 18 of file .{{[\/]}}src{{[\/]}}Array.cpp</p>
 // HTML-ARRAY:   <div>
 // HTML-ARRAY:     <div></div>
 // HTML-ARRAY:     <div>
@@ -182,7 +182,7 @@
 // HTML-GLOBAL-INDEX: </ul>
 
 // HTML-CIRCLE: <h1>class Circle</h1>
-// HTML-CIRCLE: <p>Defined at line 11 of file ./include\Circle.h</p>
+// HTML-CIRCLE: <p>Defined at line 11 of file .{{[\/]}}include{{[\/]}}Circle.h</p>
 // HTML-CIRCLE: <div>
 // HTML-CIRCLE:   <div></div>
 // HTML-CIRCLE: </div>
@@ -196,18 +196,18 @@
 // HTML-CIRCLE: </ul>
 // HTML-CIRCLE: <h2 id="Functions">Functions</h2>
 // HTML-CIRCLE: <div>
-// HTML-CIRCLE:   <h3 id="7E26D8D3972531B03E87C4F71F7BB9CB14A62163">Circle</h3>
+// HTML-CIRCLE:   <h3 id="{{([0-9A-F]{40})}}">Circle</h3>
 // HTML-CIRCLE:   <p>public void Circle(int id, double radius)</p>
-// HTML-CIRCLE:   <p>Defined at line 9 of file ./src/Circle.cpp</p>
+// HTML-CIRCLE:   <p>Defined at line 9 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
 // HTML-CIRCLE:   <div>
 // HTML-CIRCLE:     <div></div>
 // HTML-CIRCLE:     <div>
 // HTML-CIRCLE:       <p> Initializes a Circle object with a given ID and radius.</p>
 // HTML-CIRCLE:     </div>
 // HTML-CIRCLE:   </div>
-// HTML-CIRCLE:   <h3 id="1C706B81F8827714D0B4D0F2A8DEF4A43123CDA1">draw</h3>
+// HTML-CIRCLE:   <h3 id="{{([0-9A-F]{40})}}">draw</h3>
 // HTML-CIRCLE:   <p>public void draw()</p>
-// HTML-CIRCLE:   <p>Defined at line 19 of file ./src/Circle.cpp</p>
+// HTML-CIRCLE:   <p>Defined at line 19 of file .{{[\/]}}src{{[\/]}}Circle.cpp</p>
 // HTML-CIRCLE:   <div>
 // HTML-CIRCLE:     <div>
 // HTML-CIRCLE:       <p> Draws the circle (in this case, prints circle information)</p>
@@ -235,20 +235,20 @@
 // HTML-INNER-INDEX: </ul>
 // HTML-INNER-INDEX: <h2 id="Enums">Enums</h2>
 // HTML-INNER-INDEX: <div>
-// HTML-INNER-INDEX:   <h3 id="A4FE515807D3532E918D1CDBD3CA93B91CD190E1">enum class Color</h3>
+// HTML-INNER-INDEX:   <h3 id="{{([0-9A-F]{40})}}">enum class Color</h3>
 // HTML-INNER-INDEX:   <ul>
 // HTML-INNER-INDEX:     <li>Red</li>
 // HTML-INNER-INDEX:     <li>Green</li>
 // HTML-INNER-INDEX:     <li>Blue</li>
 // HTML-INNER-INDEX:   </ul>
-// HTML-INNER-INDEX:   <p>Defined at line 10 of file ./include\Shape.h</p>
+// HTML-INNER-INDEX:   <p>Defined at line 10 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
 // HTML-INNER-INDEX:   <div>
 // HTML-INNER-INDEX:     <div></div>
 // HTML-INNER-INDEX:   </div>
 // HTML-INNER-INDEX: </div>
 
 // HTML-SHAPE: <h1>class Shape</h1>
-// HTML-SHAPE: <p>Defined at line 19 of file ./include\Shape.h</p>
+// HTML-SHAPE: <p>Defined at line 19 of file .{{[\/]}}include{{[\/]}}Shape.h</p>
 // HTML-SHAPE: <div>
 // HTML-SHAPE:   <div></div>
 // HTML-SHAPE: </div>
@@ -258,7 +258,7 @@
 // HTML-SHAPE: </ul>
 // HTML-SHAPE: <h2 id="Functions">Functions</h2>
 // HTML-SHAPE: <div>
-// HTML-SHAPE:   <h3 id="ABFA7AB203B23B24A99594914F62759F5AC618E3">Shape</h3>
+// HTML-SHAPE:   <h3 id="{{([0-9A-F]{40})}}">Shape</h3>
 // HTML-SHAPE:   <p>public void Shape(int id)</p>
 // HTML-SHAPE:   <p>Defined at line 9 of file ./src/Shape.cpp</p>
 // HTML-SHAPE:   <div>
@@ -267,7 +267,7 @@
 // HTML-SHAPE:       <p> Initializes a Shape object with a given ID.</p>
 // HTML-SHAPE:     </div>
 // HTML-SHAPE:   </div>
-// HTML-SHAPE:   <h3 id="8EDF9441A0D4B6D98283B374F259232B685F5229">~Shape</h3>
+// HTML-SHAPE:   <h3 id="{{([0-9A-F]{40})}}">~Shape</h3>
 // HTML-SHAPE:   <p>public void ~Shape()</p>
 // HTML-SHAPE:   <p>Defined at line 16 of file ./src/Shape.cpp</p>
 // HTML-SHAPE:   <div>
@@ -276,14 +276,14 @@
 // HTML-SHAPE:       <p> Ensures proper cleanup of derived classes.</p>
 // HTML-SHAPE:     </div>
 // HTML-SHAPE:   </div>
-// HTML-SHAPE:   <h3 id="9A3BD58E984415F7D9D4CC4DE55B01BC9227A713">draw</h3>
+// HTML-SHAPE:   <h3 id="{{([0-9A-F]{40})}}">draw</h3>
 // HTML-SHAPE:   <p>public void draw()</p>
 // HTML-SHAPE:   <div>
 // HTML-SHAPE:     <div></div>
 // HTML-SHAPE:   </div>
 // HTML-SHAPE:   <h3 id="505BF8791AEB9B44E0E3373F5D750E875156BCCD">getId</h3>
 // HTML-SHAPE:   <p>public int getId()</p>
-// HTML-SHAPE:   <p>Defined at line 23 of file ./src/Shape.cpp</p>
+// HTML-SHAPE:   <p>Defined at line 23 of file .{{[\/]}}src{{[\/]}}Shape.cpp</p>
 // HTML-SHAPE:   <div>
 // HTML-SHAPE:     <div></div>
 // HTML-SHAPE:     <div>
@@ -301,7 +301,7 @@
 // HTML-OUTER-INDEX: <h2 id="Namespaces">Namespaces</h2>
 // HTML-OUTER-INDEX: <ul>
 // HTML-OUTER-INDEX:   <li>
-// HTML-OUTER-INDEX:     <a href="InnerNamespace/index.html">InnerNamespace</a>
+// HTML-OUTER-INDEX:     <a href="InnerNamespace{{[\/]}}index.html">InnerNamespace</a>
 // HTML-OUTER-INDEX:   </li>
 // HTML-OUTER-INDEX: </ul>
 



More information about the cfe-commits mailing list