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 | |
22 | template <class... T> |
23 | void 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 | |
47 | template <typename T, int U = 1> |
48 | void 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 | |
73 | template <> |
74 | void 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. |
104 | template <typename... Tys> |
105 | struct tuple {}; |
106 | |
107 | /// A function with a tuple parameter |
108 | /// |
109 | /// \param t The input to func_with_tuple_param |
110 | tuple<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 | |