xref: /llvm-project/clang-tools-extra/test/clang-doc/enum.cpp (revision 5ef2456a438578b0783241a2744efc62d47e5ab6)
1eab37384SPeterChou1 // RUN: rm -rf %t && mkdir -p %t
2eab37384SPeterChou1 // RUN: clang-doc --format=html --doxygen --output=%t --executor=standalone %s
3eab37384SPeterChou1 // RUN: clang-doc --format=md --doxygen --output=%t --executor=standalone %s
4eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.html --check-prefix=HTML-INDEX-LINE
5eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.html --check-prefix=HTML-INDEX
6eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.html --check-prefix=HTML-ANIMAL-LINE
7eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.html --check-prefix=HTML-ANIMAL
8eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.html --check-prefix=HTML-VEHICLES-LINE
9eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.html --check-prefix=HTML-VEHICLES
10eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX-LINE
11eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/index.md --check-prefix=MD-INDEX
12eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL-LINE
13eab37384SPeterChou1 // RUN: FileCheck %s < %t/GlobalNamespace/Animals.md --check-prefix=MD-ANIMAL
14eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES-LINE
15eab37384SPeterChou1 // RUN: FileCheck %s < %t/Vehicles/index.md --check-prefix=MD-VEHICLES
16eab37384SPeterChou1 
17eab37384SPeterChou1 
18eab37384SPeterChou1 /**
19eab37384SPeterChou1  * @brief For specifying RGB colors
20eab37384SPeterChou1  */
21eab37384SPeterChou1 enum Color {
22eab37384SPeterChou1 // MD-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
23eab37384SPeterChou1 // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
24*5ef2456aSPeterChou1   Red, ///< Comment 1
25*5ef2456aSPeterChou1   Green, ///< Comment 2
26*5ef2456aSPeterChou1   Blue ///< Comment 3
27eab37384SPeterChou1 };
28eab37384SPeterChou1 
29eab37384SPeterChou1 // MD-INDEX: ## Enums
30eab37384SPeterChou1 // MD-INDEX: | enum Color |
31eab37384SPeterChou1 // MD-INDEX: --
32eab37384SPeterChou1 // MD-INDEX: | Red |
33eab37384SPeterChou1 // MD-INDEX: | Green |
34eab37384SPeterChou1 // MD-INDEX: | Blue |
35eab37384SPeterChou1 // MD-INDEX: **brief** For specifying RGB colors
36eab37384SPeterChou1 
37*5ef2456aSPeterChou1 // HTML-INDEX: <th colspan="3">enum Color</th>
38*5ef2456aSPeterChou1 // HTML-INDEX: <td>Red</td>
39*5ef2456aSPeterChou1 // HTML-INDEX: <td>0</td>
40*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 1</p>
41*5ef2456aSPeterChou1 // HTML-INDEX: <td>Green</td>
42*5ef2456aSPeterChou1 // HTML-INDEX: <td>1</td>
43*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 2</p>
44*5ef2456aSPeterChou1 // HTML-INDEX: <td>Blue</td>
45*5ef2456aSPeterChou1 // HTML-INDEX: <td>2</td>
46*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 3</p>
47eab37384SPeterChou1 
48eab37384SPeterChou1 /**
49eab37384SPeterChou1  * @brief Shape Types
50eab37384SPeterChou1  */
51eab37384SPeterChou1 enum class Shapes {
52eab37384SPeterChou1 // MD-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
53eab37384SPeterChou1 // HTML-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
54*5ef2456aSPeterChou1 
55*5ef2456aSPeterChou1   /// Comment 1
56eab37384SPeterChou1   Circle,
57*5ef2456aSPeterChou1   /// Comment 2
58eab37384SPeterChou1   Rectangle,
59*5ef2456aSPeterChou1   /// Comment 3
60eab37384SPeterChou1   Triangle
61eab37384SPeterChou1 };
62eab37384SPeterChou1 // MD-INDEX: | enum class Shapes |
63eab37384SPeterChou1 // MD-INDEX: --
64eab37384SPeterChou1 // MD-INDEX: | Circle |
65eab37384SPeterChou1 // MD-INDEX: | Rectangle |
66eab37384SPeterChou1 // MD-INDEX: | Triangle |
67eab37384SPeterChou1 // MD-INDEX: **brief** Shape Types
68eab37384SPeterChou1 
69*5ef2456aSPeterChou1 // HTML-INDEX: <th colspan="3">enum class Shapes</th>
70*5ef2456aSPeterChou1 // HTML-INDEX: <td>Circle</td>
71*5ef2456aSPeterChou1 // HTML-INDEX: <td>0</td>
72*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 1</p>
73*5ef2456aSPeterChou1 // HTML-INDEX: <td>Rectangle</td>
74*5ef2456aSPeterChou1 // HTML-INDEX: <td>1</td>
75*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 2</p>
76*5ef2456aSPeterChou1 // HTML-INDEX: <td>Triangle</td>
77*5ef2456aSPeterChou1 // HTML-INDEX: <td>2</td>
78*5ef2456aSPeterChou1 // HTML-INDEX: <p> Comment 3</p>
79*5ef2456aSPeterChou1 
80eab37384SPeterChou1 
81eab37384SPeterChou1 
82eab37384SPeterChou1 class Animals {
83eab37384SPeterChou1 // MD-ANIMAL-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
84eab37384SPeterChou1 // HTML-ANIMAL-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
85eab37384SPeterChou1 public:
86eab37384SPeterChou1       /**
87eab37384SPeterChou1        * @brief specify what animal the class is
88eab37384SPeterChou1        */
89eab37384SPeterChou1       enum AnimalType {
90eab37384SPeterChou1 // MD-ANIMAL-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
91eab37384SPeterChou1 // HTML-ANIMAL-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
92*5ef2456aSPeterChou1           Dog, ///< Man's best friend
93*5ef2456aSPeterChou1           Cat, ///< Man's other best friend
94*5ef2456aSPeterChou1           Iguana ///< A lizard
95eab37384SPeterChou1       };
96eab37384SPeterChou1 };
97eab37384SPeterChou1 
98eab37384SPeterChou1 // HTML-ANIMAL: <h1>class Animals</h1>
99eab37384SPeterChou1 // HTML-ANIMAL: <h2 id="Enums">Enums</h2>
100*5ef2456aSPeterChou1 // HTML-ANIMAL: <th colspan="3">enum AnimalType</th>
101*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>Dog</td>
102*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>0</td>
103*5ef2456aSPeterChou1 // HTML-ANIMAL: <p> Man&apos;s best friend</p>
104*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>Cat</td>
105*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>1</td>
106*5ef2456aSPeterChou1 // HTML-ANIMAL: <p> Man&apos;s other best friend</p>
107*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>Iguana</td>
108*5ef2456aSPeterChou1 // HTML-ANIMAL: <td>2</td>
109*5ef2456aSPeterChou1 // HTML-ANIMAL: <p> A lizard</p>
110*5ef2456aSPeterChou1 
111eab37384SPeterChou1 
112eab37384SPeterChou1 // MD-ANIMAL: # class Animals
113eab37384SPeterChou1 // MD-ANIMAL: ## Enums
114eab37384SPeterChou1 // MD-ANIMAL: | enum AnimalType |
115eab37384SPeterChou1 // MD-ANIMAL: --
116eab37384SPeterChou1 // MD-ANIMAL: | Dog |
117eab37384SPeterChou1 // MD-ANIMAL: | Cat |
118eab37384SPeterChou1 // MD-ANIMAL: | Iguana |
119eab37384SPeterChou1 // MD-ANIMAL: **brief** specify what animal the class is
120eab37384SPeterChou1 
121eab37384SPeterChou1 
122eab37384SPeterChou1 namespace Vehicles {
123eab37384SPeterChou1     /**
124eab37384SPeterChou1      * @brief specify type of car
125eab37384SPeterChou1      */
126eab37384SPeterChou1     enum Car {
127eab37384SPeterChou1 // MD-VEHICLES-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp#[[@LINE-1]]*
128eab37384SPeterChou1 // HTML-VEHICLES-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}enum.cpp</p>
129*5ef2456aSPeterChou1 
130*5ef2456aSPeterChou1        Sedan, ///< Comment 1
131*5ef2456aSPeterChou1        SUV, ///< Comment 2
132*5ef2456aSPeterChou1        Pickup, ///< Comment 3
133*5ef2456aSPeterChou1        Hatchback ///< Comment 4
134eab37384SPeterChou1     };
135eab37384SPeterChou1 }
136eab37384SPeterChou1 
137eab37384SPeterChou1 // MD-VEHICLES: # namespace Vehicles
138eab37384SPeterChou1 // MD-VEHICLES: ## Enums
139eab37384SPeterChou1 // MD-VEHICLES: | enum Car |
140eab37384SPeterChou1 // MD-VEHICLES: --
141eab37384SPeterChou1 // MD-VEHICLES: | Sedan |
142eab37384SPeterChou1 // MD-VEHICLES: | SUV |
143eab37384SPeterChou1 // MD-VEHICLES: | Pickup |
144eab37384SPeterChou1 // MD-VEHICLES: | Hatchback |
145eab37384SPeterChou1 // MD-VEHICLES: **brief** specify type of car
146eab37384SPeterChou1 
147eab37384SPeterChou1 // HTML-VEHICLES: <h1>namespace Vehicles</h1>
148*5ef2456aSPeterChou1 // HTML-VEHICLES: <th colspan="3">enum Car</th>
149*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>Sedan</td>
150*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>0</td>
151*5ef2456aSPeterChou1 // HTML-VEHICLES: <p> Comment 1</p>
152*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>SUV</td>
153*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>1</td>
154*5ef2456aSPeterChou1 // HTML-VEHICLES: <p> Comment 2</p>
155*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>Pickup</td>
156*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>2</td>
157*5ef2456aSPeterChou1 // HTML-VEHICLES: <p> Comment 3</p>
158*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>Hatchback</td>
159*5ef2456aSPeterChou1 // HTML-VEHICLES: <td>3</td>
160*5ef2456aSPeterChou1 // HTML-VEHICLES: <p> Comment 4</p>
161*5ef2456aSPeterChou1 
162*5ef2456aSPeterChou1 
163*5ef2456aSPeterChou1 enum ColorUserSpecified {
164*5ef2456aSPeterChou1   RedUserSpecified = 'A',
165*5ef2456aSPeterChou1   GreenUserSpecified = 2,
166*5ef2456aSPeterChou1   BlueUserSpecified = 'C'
167*5ef2456aSPeterChou1 };
168*5ef2456aSPeterChou1 
169*5ef2456aSPeterChou1 // MD-INDEX: | enum ColorUserSpecified |
170*5ef2456aSPeterChou1 // MD-INDEX: --
171*5ef2456aSPeterChou1 // MD-INDEX: | RedUserSpecified |
172*5ef2456aSPeterChou1 // MD-INDEX: | GreenUserSpecified |
173*5ef2456aSPeterChou1 // MD-INDEX: | BlueUserSpecified |
174*5ef2456aSPeterChou1 
175*5ef2456aSPeterChou1 // HTML-INDEX: <th colspan="2">enum ColorUserSpecified</th>
176*5ef2456aSPeterChou1 // HTML-INDEX: <td>RedUserSpecified</td>
177*5ef2456aSPeterChou1 // HTML-INDEX: <td>&apos;A&apos;</td>
178*5ef2456aSPeterChou1 // HTML-INDEX: <td>GreenUserSpecified</td>
179*5ef2456aSPeterChou1 // HTML-INDEX: <td>2</td>
180*5ef2456aSPeterChou1 // HTML-INDEX: <td>BlueUserSpecified</td>
181*5ef2456aSPeterChou1 // HTML-INDEX: <td>&apos;C&apos;</td>
182