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 158