1// RUN: rm -rf %t
2// RUN: mkdir %t
3
4// RUN: clang-doc --doxygen --executor=standalone %s -output=%t/docs
5// RUN: cat %t/docs/index.yaml | FileCheck %s --check-prefix=YAML
6
7// RUN: clang-doc --doxygen --executor=standalone %s -output=%t/docs --format=md
8// RUN: cat %t/docs/GlobalNamespace/index.md | FileCheck %s --check-prefix=MD
9
10// YAML: ---
11// YAML-NEXT: USR: '{{([0-9A-F]{40})}}'
12// YAML-NEXT: ChildRecords:
13// YAML-NEXT: - Type: Record
14// YAML-NEXT: Name: 'tuple'
15// YAML-NEXT: QualName: 'tuple'
16// YAML-NEXT: USR: '{{([0-9A-F]{40})}}'
17// YAML-NEXT: Path: 'GlobalNamespace'
18
19// MD: # Global Namespace
20// MD: ## Functions
21
22template <class... T>
23void ParamPackFunction(T... args);
24
25// YAML-NEXT: ChildFunctions:
26// YAML-NEXT: - USR: '{{([0-9A-F]{40})}}'
27// YAML-NEXT: Name: 'ParamPackFunction'
28// YAML-NEXT: Location:
29// YAML-NEXT: - LineNumber: [[# @LINE - 6]]
30// YAML-NEXT: Filename: '{{.*}}'
31// YAML-NEXT: Params:
32// YAML-NEXT: - Type:
33// YAML-NEXT: Name: 'T...'
34// YAML-NEXT: QualName: 'T...'
35// YAML-NEXT: Name: 'args'
36// YAML-NEXT: ReturnType:
37// YAML-NEXT: Type:
38// YAML-NEXT: Name: 'void'
39// YAML-NEXT: QualName: 'void'
40// YAML-NEXT: Template:
41// YAML-NEXT: Params:
42// YAML-NEXT: - Contents: 'class... T'
43
44// MD: ### ParamPackFunction
45// MD: *void ParamPackFunction(T... args)*
46
47template <typename T, int U = 1>
48void function(T x) {}
49
50// YAML-NEXT: - USR: '{{([0-9A-F]{40})}}'
51// YAML-NEXT: Name: 'function'
52// YAML-NEXT: DefLocation:
53// YAML-NEXT: LineNumber: [[# @LINE - 5]]
54// YAML-NEXT: Filename: '{{.*}}'
55// YAML-NEXT: Params:
56// YAML-NEXT: - Type:
57// YAML-NEXT: Name: 'T'
58// YAML-NEXT: QualName: 'T'
59// YAML-NEXT: Name: 'x'
60// YAML-NEXT: ReturnType:
61// YAML-NEXT: Type:
62// YAML-NEXT: Name: 'void'
63// YAML-NEXT: QualName: 'void'
64// YAML-NEXT: Template:
65// YAML-NEXT: Params:
66// YAML-NEXT: - Contents: 'typename T'
67// YAML-NEXT: - Contents: 'int U = 1'
68
69// MD: ### function
70// MD: *void function(T x)*
71// MD: *Defined at {{.*}}templates.cpp#[[# @LINE - 23]]*
72
73template <>
74void function<bool, 0>(bool x) {}
75
76// YAML-NEXT: - USR: '{{([0-9A-F]{40})}}'
77// YAML-NEXT: Name: 'function'
78// YAML-NEXT: DefLocation:
79// YAML-NEXT: LineNumber: [[# @LINE - 6]]
80// YAML-NEXT: Filename: '{{.*}}'
81// YAML-NEXT: Params:
82// YAML-NEXT: - Type:
83// YAML-NEXT: Name: 'bool'
84// YAML-NEXT: QualName: 'bool'
85// YAML-NEXT: Name: 'x'
86// YAML-NEXT: ReturnType:
87// YAML-NEXT: Type:
88// YAML-NEXT: Name: 'void'
89// YAML-NEXT: QualName: 'void'
90// YAML-NEXT: Template:
91// YAML-NEXT: Specialization:
92// YAML-NEXT: SpecializationOf: '{{([0-9A-F]{40})}}'
93// YAML-NEXT: Params:
94// YAML-NEXT: - Contents: 'bool'
95// YAML-NEXT: - Contents: '0'
96
97// MD: ### function
98// MD: *void function(bool x)*
99// MD: *Defined at {{.*}}templates.cpp#[[# @LINE - 26]]*
100
101/// A Tuple type
102///
103/// Does Tuple things.
104template <typename... Tys>
105struct tuple {};
106
107/// A function with a tuple parameter
108///
109/// \param t The input to func_with_tuple_param
110tuple<int, int, bool> func_with_tuple_param(tuple<int, int, bool> t) { return t; }
111
112// YAML-NEXT: - USR: '{{([0-9A-F]{40})}}'
113// YAML-NEXT: Name: 'func_with_tuple_param'
114// YAML-NEXT: Description:
115// YAML-NEXT: - Kind: FullComment
116// YAML-NEXT: Children:
117// YAML-NEXT: - Kind: ParagraphComment
118// YAML-NEXT: Children:
119// YAML-NEXT: - Kind: TextComment
120// YAML-NEXT: Text: ' A function with a tuple parameter'
121// YAML-NEXT: - Kind: ParagraphComment
122// YAML-NEXT: Children:
123// YAML-NEXT: - Kind: TextComment
124// YAML-NEXT: - Kind: ParamCommandComment
125// YAML-NEXT: Direction: '[in]'
126// YAML-NEXT: ParamName: 't'
127// YAML-NEXT: Children:
128// YAML-NEXT: - Kind: ParagraphComment
129// YAML-NEXT: Children:
130// YAML-NEXT: - Kind: TextComment
131// YAML-NEXT: Text: ' The input to func_with_tuple_param'
132// YAML-NEXT: DefLocation:
133// YAML-NEXT: LineNumber: [[# @LINE - 23]]
134// YAML-NEXT: Filename:
135// YAML-NEXT: Params:
136// YAML-NEXT: - Type:
137// YAML-NEXT: Type: Record
138// YAML-NEXT: Name: 'tuple'
139// YAML-NEXT: QualName: 'tuple<int, int, bool>'
140// YAML-NEXT: USR: '{{([0-9A-F]{40})}}'
141// YAML-NEXT: Path: 'GlobalNamespace'
142// YAML-NEXT: Name: 't'
143// YAML-NEXT: ReturnType:
144// YAML-NEXT: Type:
145// YAML-NEXT: Type: Record
146// YAML-NEXT: Name: 'tuple'
147// YAML-NEXT: QualName: 'tuple<int, int, bool>'
148// YAML-NEXT: USR: '{{([0-9A-F]{40})}}'
149// YAML-NEXT: Path: 'GlobalNamespace'
150// YAML-NEXT: ...
151
152// MD: ### func_with_tuple_param
153// MD: *tuple<int, int, bool> func_with_tuple_param(tuple<int, int, bool> t)*
154// MD: *Defined at {{.*}}templates.cpp#[[# @LINE - 44]]*
155// MD: A function with a tuple parameter
156// MD: **t** The input to func_with_tuple_param
157

Provided by KDAB

Privacy Policy
Learn to use CMake with our Intro Training
Find out more

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