1// RUN: rm -rf %t && mkdir -p %t
2// RUN: clang-doc --format=html --output=%t --executor=standalone %s
3// RUN: clang-doc --format=md --output=%t --executor=standalone %s
4// RUN: FileCheck %s < %t/index_json.js -check-prefix=JSON-INDEX
5// RUN: FileCheck %s < %t/@nonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS-LINE
6// RUN: FileCheck %s < %t/@nonymous_namespace/AnonClass.html -check-prefix=HTML-ANON-CLASS
7// RUN: FileCheck %s < %t/@nonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX-LINE
8// RUN: FileCheck %s < %t/@nonymous_namespace/index.html -check-prefix=HTML-ANON-INDEX
9// RUN: FileCheck %s < %t/AnotherNamespace/ClassInAnotherNamespace.html -check-prefix=HTML-ANOTHER-CLASS-LINE
10// RUN: FileCheck %s < %t/AnotherNamespace/ClassInAnotherNamespace.html -check-prefix=HTML-ANOTHER-CLASS
11// RUN: FileCheck %s < %t/AnotherNamespace/index.html -check-prefix=HTML-ANOTHER-INDEX-LINE
12// RUN: FileCheck %s < %t/AnotherNamespace/index.html -check-prefix=HTML-ANOTHER-INDEX
13// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.html -check-prefix=HTML-NESTED-CLASS-LINE
14// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.html -check-prefix=HTML-NESTED-CLASS
15// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/index.html -check-prefix=HTML-NESTED-INDEX-LINE
16// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/index.html -check-prefix=HTML-NESTED-INDEX
17// RUN: FileCheck %s < %t/PrimaryNamespace/index.html -check-prefix=HTML-PRIMARY-INDEX-LINE
18// RUN: FileCheck %s < %t/PrimaryNamespace/index.html -check-prefix=HTML-PRIMARY-INDEX
19// RUN: FileCheck %s < %t/PrimaryNamespace/ClassInPrimaryNamespace.html -check-prefix=HTML-PRIMARY-CLASS-LINE
20// RUN: FileCheck %s < %t/PrimaryNamespace/ClassInPrimaryNamespace.html -check-prefix=HTML-PRIMARY-CLASS
21// RUN: FileCheck %s < %t/@nonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS-LINE
22// RUN: FileCheck %s < %t/@nonymous_namespace/AnonClass.md -check-prefix=MD-ANON-CLASS
23// RUN: FileCheck %s < %t/@nonymous_namespace/index.md -check-prefix=MD-ANON-INDEX-LINE
24// RUN: FileCheck %s < %t/@nonymous_namespace/index.md -check-prefix=MD-ANON-INDEX
25// RUN: FileCheck %s < %t/AnotherNamespace/ClassInAnotherNamespace.md -check-prefix=MD-ANOTHER-CLASS-LINE
26// RUN: FileCheck %s < %t/AnotherNamespace/ClassInAnotherNamespace.md -check-prefix=MD-ANOTHER-CLASS
27// RUN: FileCheck %s < %t/AnotherNamespace/index.md -check-prefix=MD-ANOTHER-INDEX-LINE
28// RUN: FileCheck %s < %t/AnotherNamespace/index.md -check-prefix=MD-ANOTHER-INDEX
29// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.md -check-prefix=MD-NESTED-CLASS-LINE
30// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/ClassInNestedNamespace.md -check-prefix=MD-NESTED-CLASS
31// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/index.md -check-prefix=MD-NESTED-INDEX-LINE
32// RUN: FileCheck %s < %t/PrimaryNamespace/NestedNamespace/index.md -check-prefix=MD-NESTED-INDEX
33// RUN: FileCheck %s < %t/PrimaryNamespace/index.md -check-prefix=MD-PRIMARY-INDEX-LINE
34// RUN: FileCheck %s < %t/PrimaryNamespace/index.md -check-prefix=MD-PRIMARY-INDEX
35// RUN: FileCheck %s < %t/PrimaryNamespace/ClassInPrimaryNamespace.md -check-prefix=MD-PRIMARY-CLASS-LINE
36// RUN: FileCheck %s < %t/PrimaryNamespace/ClassInPrimaryNamespace.md -check-prefix=MD-PRIMARY-CLASS
37// RUN: FileCheck %s < %t/GlobalNamespace/index.html -check-prefix=HTML-GLOBAL-INDEX
38// RUN: FileCheck %s < %t/GlobalNamespace/index.md -check-prefix=MD-GLOBAL-INDEX
39// RUN: FileCheck %s < %t/all_files.md -check-prefix=MD-ALL-FILES
40// RUN: FileCheck %s < %t/index.md -check-prefix=MD-INDEX
41
42// Anonymous Namespace
43namespace {
44void anonFunction() {}
45// MD-ANON-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
46// HTML-ANON-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
47
48class AnonClass {};
49// MD-ANON-CLASS-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
50// HTML-ANON-CLASS-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
51
52// MD-ANON-CLASS: # class AnonClass
53// HTML-ANON-CLASS: <h1>class AnonClass</h1>
54} // namespace
55
56// MD-ANON-INDEX: # namespace @nonymous_namespace
57// MD-ANON-INDEX: Anonymous Namespace
58// MD-ANON-INDEX: ## Records
59// MD-ANON-INDEX: * [AnonClass](AnonClass.md)
60// MD-ANON-INDEX: ## Functions
61// MD-ANON-INDEX: ### anonFunction
62// MD-ANON-INDEX: *void anonFunction()*
63
64// HTML-ANON-INDEX: <h1>namespace @nonymous_namespace</h1>
65// HTML-ANON-INDEX: <p> Anonymous Namespace</p>
66// HTML-ANON-INDEX: <h2 id="Records">Records</h2>
67// HTML-ANON-INDEX: <a href="AnonClass.html">AnonClass</a>
68// HTML-ANON-INDEX: <h2 id="Functions">Functions</h2>
69// HTML-ANON-INDEX: <h3 id="{{([0-9A-F]{40})}}">anonFunction</h3>
70// HTML-ANON-INDEX: <p>void anonFunction()</p>
71
72// Primary Namespace
73namespace PrimaryNamespace {
74// Function in PrimaryNamespace
75void functionInPrimaryNamespace() {}
76// MD-PRIMARY-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
77// HTML-PRIMARY-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
78
79// Class in PrimaryNamespace
80class ClassInPrimaryNamespace {};
81// MD-PRIMARY-CLASS-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
82// HTML-PRIMARY-CLASS-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
83
84// MD-PRIMARY-CLASS: # class ClassInPrimaryNamespace
85// MD-PRIMARY-CLASS: Class in PrimaryNamespace
86
87// HTML-PRIMARY-CLASS: <h1>class ClassInPrimaryNamespace</h1>
88// HTML-PRIMARY-CLASS: <p> Class in PrimaryNamespace</p>
89
90// Nested namespace
91namespace NestedNamespace {
92// Function in NestedNamespace
93void functionInNestedNamespace() {}
94// MD-NESTED-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
95// HTML-NESTED-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
96
97// Class in NestedNamespace
98class ClassInNestedNamespace {};
99// MD-NESTED-CLASS-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
100// HTML-NESTED-CLASS-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
101
102// MD-NESTED-CLASS: # class ClassInNestedNamespace
103// MD-NESTED-CLASS: Class in NestedNamespace
104
105// HTML-NESTED-CLASS: <h1>class ClassInNestedNamespace</h1>
106// HTML-NESTED-CLASS: <p> Class in NestedNamespace</p>
107} // namespace NestedNamespace
108
109// MD-NESTED-INDEX: # namespace NestedNamespace
110// MD-NESTED-INDEX: Nested namespace
111// MD-NESTED-INDEX: ## Records
112// MD-NESTED-INDEX: * [ClassInNestedNamespace](ClassInNestedNamespace.md)
113// MD-NESTED-INDEX: ## Functions
114// MD-NESTED-INDEX: ### functionInNestedNamespace
115// MD-NESTED-INDEX: *void functionInNestedNamespace()*
116// MD-NESTED-INDEX: Function in NestedNamespace
117
118// HTML-NESTED-INDEX: <h1>namespace NestedNamespace</h1>
119// HTML-NESTED-INDEX: <p> Nested namespace</p>
120// HTML-NESTED-INDEX: <h2 id="Records">Records</h2>
121// HTML-NESTED-INDEX: <a href="ClassInNestedNamespace.html">ClassInNestedNamespace</a>
122// HTML-NESTED-INDEX: <h2 id="Functions">Functions</h2>
123// HTML-NESTED-INDEX: <h3 id="{{([0-9A-F]{40})}}">functionInNestedNamespace</h3>
124// HTML-NESTED-INDEX: <p>void functionInNestedNamespace()</p>
125// HTML-NESTED-INDEX: <p> Function in NestedNamespace</p>
126} // namespace PrimaryNamespace
127
128// MD-PRIMARY-INDEX: # namespace PrimaryNamespace
129// MD-PRIMARY-INDEX: Primary Namespace
130// MD-PRIMARY-INDEX: ## Namespaces
131// MD-PRIMARY-INDEX: * [NestedNamespace](NestedNamespace{{[\/]}}index.md)
132// MD-PRIMARY-INDEX: ## Records
133// MD-PRIMARY-INDEX: * [ClassInPrimaryNamespace](ClassInPrimaryNamespace.md)
134// MD-PRIMARY-INDEX: ## Functions
135// MD-PRIMARY-INDEX: ### functionInPrimaryNamespace
136// MD-PRIMARY-INDEX: *void functionInPrimaryNamespace()*
137// MD-PRIMARY-INDEX: Function in PrimaryNamespace
138
139// HTML-PRIMARY-INDEX: <h1>namespace PrimaryNamespace</h1>
140// HTML-PRIMARY-INDEX: <p> Primary Namespace</p>
141// HTML-PRIMARY-INDEX: <h2 id="Namespaces">Namespaces</h2>
142// HTML-PRIMARY-INDEX: <a href="NestedNamespace{{[\/]}}index.html">NestedNamespace</a>
143// HTML-PRIMARY-INDEX: <h2 id="Records">Records</h2>
144// HTML-PRIMARY-INDEX: <a href="ClassInPrimaryNamespace.html">ClassInPrimaryNamespace</a>
145// HTML-PRIMARY-INDEX: <h2 id="Functions">Functions</h2>
146// HTML-PRIMARY-INDEX: <h3 id="{{([0-9A-F]{40})}}">functionInPrimaryNamespace</h3>
147// HTML-PRIMARY-INDEX: <p>void functionInPrimaryNamespace()</p>
148// HTML-PRIMARY-INDEX: <p> Function in PrimaryNamespace</p>
149
150// AnotherNamespace
151namespace AnotherNamespace {
152// Function in AnotherNamespace
153void functionInAnotherNamespace() {}
154// MD-ANOTHER-INDEX-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
155// HTML-ANOTHER-INDEX-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
156
157// Class in AnotherNamespace
158class ClassInAnotherNamespace {};
159// MD-ANOTHER-CLASS-LINE: *Defined at {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp#[[@LINE-1]]*
160// HTML-ANOTHER-CLASS-LINE: <p>Defined at line [[@LINE-2]] of file {{.*}}clang-tools-extra{{[\/]}}test{{[\/]}}clang-doc{{[\/]}}namespace.cpp</p>
161
162// MD-ANOTHER-CLASS: # class ClassInAnotherNamespace
163// MD-ANOTHER-CLASS: Class in AnotherNamespace
164
165// HTML-ANOTHER-CLASS: <h1>class ClassInAnotherNamespace</h1>
166// HTML-ANOTHER-CLASS: <p> Class in AnotherNamespace</p>
167
168} // namespace AnotherNamespace
169
170// MD-ANOTHER-INDEX: # namespace AnotherNamespace
171// MD-ANOTHER-INDEX: AnotherNamespace
172// MD-ANOTHER-INDEX: ## Records
173// MD-ANOTHER-INDEX: * [ClassInAnotherNamespace](ClassInAnotherNamespace.md)
174// MD-ANOTHER-INDEX: ## Functions
175// MD-ANOTHER-INDEX: ### functionInAnotherNamespace
176// MD-ANOTHER-INDEX: *void functionInAnotherNamespace()*
177// MD-ANOTHER-INDEX: Function in AnotherNamespace
178
179// HTML-ANOTHER-INDEX: <h1>namespace AnotherNamespace</h1>
180// HTML-ANOTHER-INDEX: <p> AnotherNamespace</p>
181// HTML-ANOTHER-INDEX: <h2 id="Records">Records</h2>
182// HTML-ANOTHER-INDEX: <a href="ClassInAnotherNamespace.html">ClassInAnotherNamespace</a>
183// HTML-ANOTHER-INDEX: <h2 id="Functions">Functions</h2>
184// HTML-ANOTHER-INDEX: <h3 id="{{([0-9A-F]{40})}}">functionInAnotherNamespace</h3>
185// HTML-ANOTHER-INDEX: <p>void functionInAnotherNamespace()</p>
186// HTML-ANOTHER-INDEX: <p> Function in AnotherNamespace</p>
187
188// JSON-INDEX: async function LoadIndex() {
189// JSON-INDEX-NEXT: return{
190// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
191// JSON-INDEX-NEXT: "Name": "",
192// JSON-INDEX-NEXT: "RefType": "default",
193// JSON-INDEX-NEXT: "Path": "",
194// JSON-INDEX-NEXT: "Children": [
195// JSON-INDEX-NEXT: {
196// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
197// JSON-INDEX-NEXT: "Name": "@nonymous_namespace",
198// JSON-INDEX-NEXT: "RefType": "namespace",
199// JSON-INDEX-NEXT: "Path": "@nonymous_namespace",
200// JSON-INDEX-NEXT: "Children": [
201// JSON-INDEX-NEXT: {
202// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
203// JSON-INDEX-NEXT: "Name": "AnonClass",
204// JSON-INDEX-NEXT: "RefType": "record",
205// JSON-INDEX-NEXT: "Path": "@nonymous_namespace",
206// JSON-INDEX-NEXT: "Children": []
207// JSON-INDEX-NEXT: }
208// JSON-INDEX-NEXT: ]
209// JSON-INDEX-NEXT: },
210// JSON-INDEX-NEXT: {
211// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
212// JSON-INDEX-NEXT: "Name": "AnotherNamespace",
213// JSON-INDEX-NEXT: "RefType": "namespace",
214// JSON-INDEX-NEXT: "Path": "AnotherNamespace",
215// JSON-INDEX-NEXT: "Children": [
216// JSON-INDEX-NEXT: {
217// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
218// JSON-INDEX-NEXT: "Name": "ClassInAnotherNamespace",
219// JSON-INDEX-NEXT: "RefType": "record",
220// JSON-INDEX-NEXT: "Path": "AnotherNamespace",
221// JSON-INDEX-NEXT: "Children": []
222// JSON-INDEX-NEXT: }
223// JSON-INDEX-NEXT: ]
224// JSON-INDEX-NEXT: },
225// JSON-INDEX-NEXT: {
226// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
227// JSON-INDEX-NEXT: "Name": "GlobalNamespace",
228// JSON-INDEX-NEXT: "RefType": "namespace",
229// JSON-INDEX-NEXT: "Path": "GlobalNamespace",
230// JSON-INDEX-NEXT: "Children": []
231// JSON-INDEX-NEXT: },
232// JSON-INDEX-NEXT: {
233// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
234// JSON-INDEX-NEXT: "Name": "PrimaryNamespace",
235// JSON-INDEX-NEXT: "RefType": "namespace",
236// JSON-INDEX-NEXT: "Path": "PrimaryNamespace",
237// JSON-INDEX-NEXT: "Children": [
238// JSON-INDEX-NEXT: {
239// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
240// JSON-INDEX-NEXT: "Name": "ClassInPrimaryNamespace",
241// JSON-INDEX-NEXT: "RefType": "record",
242// JSON-INDEX-NEXT: "Path": "PrimaryNamespace",
243// JSON-INDEX-NEXT: "Children": []
244// JSON-INDEX-NEXT: },
245// JSON-INDEX-NEXT: {
246// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
247// JSON-INDEX-NEXT: "Name": "NestedNamespace",
248// JSON-INDEX-NEXT: "RefType": "namespace",
249// JSON-INDEX-NEXT: "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
250// JSON-INDEX-NEXT: "Children": [
251// JSON-INDEX-NEXT: {
252// JSON-INDEX-NEXT: "USR": "{{([0-9A-F]{40})}}",
253// JSON-INDEX-NEXT: "Name": "ClassInNestedNamespace",
254// JSON-INDEX-NEXT: "RefType": "record",
255// JSON-INDEX-NEXT: "Path": "PrimaryNamespace{{[\/]+}}NestedNamespace",
256// JSON-INDEX-NEXT: "Children": []
257// JSON-INDEX-NEXT: }
258// JSON-INDEX-NEXT: ]
259// JSON-INDEX-NEXT: }
260// JSON-INDEX-NEXT: ]
261// JSON-INDEX-NEXT: }
262// JSON-INDEX-NEXT: ]
263// JSON-INDEX-NEXT: };
264// JSON-INDEX-NEXT: }
265
266// HTML-GLOBAL-INDEX: <div id="main-content" class="col-xs-12 col-sm-9 col-md-8 main-content">
267// HTML-GLOBAL-INDEX: <h1>Global Namespace</h1>
268// HTML-GLOBAL-INDEX: <h2 id="Namespaces">Namespaces</h2>
269// HTML-GLOBAL-INDEX: <li>@nonymous_namespace</li>
270// HTML-GLOBAL-INDEX: <li>AnotherNamespace</li>
271// HTML-GLOBAL-INDEX: <li>PrimaryNamespace</li>
272
273// MD-GLOBAL-INDEX: # Global Namespace
274// MD-GLOBAL-INDEX: ## Namespaces
275// MD-GLOBAL-INDEX: * [@nonymous_namespace](..{{[\/]}}@nonymous_namespace{{[\/]}}index.md)
276// MD-GLOBAL-INDEX: * [AnotherNamespace](..{{[\/]}}AnotherNamespace{{[\/]}}index.md)
277// MD-GLOBAL-INDEX: * [PrimaryNamespace](..{{[\/]}}PrimaryNamespace{{[\/]}}index.md)
278
279// MD-ALL-FILES: # All Files
280// MD-ALL-FILES: ## [@nonymous_namespace](@nonymous_namespace{{[\/]}}index.md)
281// MD-ALL-FILES: ## [AnotherNamespace](AnotherNamespace{{[\/]}}index.md)
282// MD-ALL-FILES: ## [GlobalNamespace](GlobalNamespace{{[\/]}}index.md)
283// MD-ALL-FILES: ## [PrimaryNamespace](PrimaryNamespace{{[\/]}}index.md)
284
285// MD-INDEX: # C/C++ Reference
286// MD-INDEX: * Namespace: [@nonymous_namespace](@nonymous_namespace)
287// MD-INDEX: * Namespace: [AnotherNamespace](AnotherNamespace)
288// MD-INDEX: * Namespace: [PrimaryNamespace](PrimaryNamespace)

Provided by KDAB

Privacy Policy
Improve your Profiling and Debugging skills
Find out more

source code of clang-tools-extra/test/clang-doc/namespace.cpp