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