316 lines · cpp
1// RUN: rm -rf %t2// RUN: split-file %s %t3// RUN: sed -e "s@INPUT_DIR@%{/t:regex_replacement}@g" \4// RUN: %t/reference.output.json.in >> %t/reference.output.json5// RUN: %clang_cc1 -extract-api --pretty-sgf -triple arm64-apple-macosx \6// RUN: -x c++-header %t/input.h -o %t/output.json -verify7 8// Generator version is not consistent across test runs, normalize it.9// RUN: sed -e "s@\"generator\": \".*\"@\"generator\": \"?\"@g" \10// RUN: %t/output.json >> %t/output-normalized.json11// RUN: diff %t/reference.output.json %t/output-normalized.json12 13//--- input.h14template<typename T> void Foo(T Bar);15 16template<typename T> T Fizz(int Buzz);17/// expected-no-diagnostics18 19//--- reference.output.json.in20{21 "metadata": {22 "formatVersion": {23 "major": 0,24 "minor": 5,25 "patch": 326 },27 "generator": "?"28 },29 "module": {30 "name": "",31 "platform": {32 "architecture": "arm64",33 "operatingSystem": {34 "minimumVersion": {35 "major": 11,36 "minor": 0,37 "patch": 038 },39 "name": "macosx"40 },41 "vendor": "apple"42 }43 },44 "relationships": [],45 "symbols": [46 {47 "accessLevel": "public",48 "declarationFragments": [49 {50 "kind": "keyword",51 "spelling": "template"52 },53 {54 "kind": "text",55 "spelling": " <"56 },57 {58 "kind": "keyword",59 "spelling": "typename"60 },61 {62 "kind": "text",63 "spelling": " "64 },65 {66 "kind": "genericParameter",67 "spelling": "T"68 },69 {70 "kind": "text",71 "spelling": "> "72 },73 {74 "kind": "typeIdentifier",75 "preciseIdentifier": "c:v",76 "spelling": "void"77 },78 {79 "kind": "text",80 "spelling": " "81 },82 {83 "kind": "identifier",84 "spelling": "Foo"85 },86 {87 "kind": "text",88 "spelling": "("89 },90 {91 "kind": "typeIdentifier",92 "preciseIdentifier": "c:t0.0",93 "spelling": "T"94 },95 {96 "kind": "text",97 "spelling": " "98 },99 {100 "kind": "internalParam",101 "spelling": "Bar"102 },103 {104 "kind": "text",105 "spelling": ");"106 }107 ],108 "functionSignature": {109 "parameters": [110 {111 "declarationFragments": [112 {113 "kind": "typeIdentifier",114 "preciseIdentifier": "c:t0.0",115 "spelling": "T"116 },117 {118 "kind": "text",119 "spelling": " "120 },121 {122 "kind": "internalParam",123 "spelling": "Bar"124 }125 ],126 "name": "Bar"127 }128 ],129 "returns": [130 {131 "kind": "typeIdentifier",132 "preciseIdentifier": "c:v",133 "spelling": "void"134 }135 ]136 },137 "identifier": {138 "interfaceLanguage": "c++",139 "precise": "c:@FT@>1#TFoo#t0.0#v#"140 },141 "kind": {142 "displayName": "Function Template",143 "identifier": "c++.func"144 },145 "location": {146 "position": {147 "character": 26,148 "line": 0149 },150 "uri": "file://INPUT_DIR/input.h"151 },152 "names": {153 "navigator": [154 {155 "kind": "identifier",156 "spelling": "Foo"157 }158 ],159 "subHeading": [160 {161 "kind": "identifier",162 "spelling": "Foo"163 }164 ],165 "title": "Foo"166 },167 "pathComponents": [168 "Foo"169 ],170 "swiftGenerics": {171 "parameters": [172 {173 "depth": 0,174 "index": 0,175 "name": "T"176 }177 ]178 }179 },180 {181 "accessLevel": "public",182 "declarationFragments": [183 {184 "kind": "keyword",185 "spelling": "template"186 },187 {188 "kind": "text",189 "spelling": " <"190 },191 {192 "kind": "keyword",193 "spelling": "typename"194 },195 {196 "kind": "text",197 "spelling": " "198 },199 {200 "kind": "genericParameter",201 "spelling": "T"202 },203 {204 "kind": "text",205 "spelling": "> "206 },207 {208 "kind": "typeIdentifier",209 "preciseIdentifier": "c:t0.0",210 "spelling": "T"211 },212 {213 "kind": "text",214 "spelling": " "215 },216 {217 "kind": "identifier",218 "spelling": "Fizz"219 },220 {221 "kind": "text",222 "spelling": "("223 },224 {225 "kind": "typeIdentifier",226 "preciseIdentifier": "c:I",227 "spelling": "int"228 },229 {230 "kind": "text",231 "spelling": " "232 },233 {234 "kind": "internalParam",235 "spelling": "Buzz"236 },237 {238 "kind": "text",239 "spelling": ");"240 }241 ],242 "functionSignature": {243 "parameters": [244 {245 "declarationFragments": [246 {247 "kind": "typeIdentifier",248 "preciseIdentifier": "c:I",249 "spelling": "int"250 },251 {252 "kind": "text",253 "spelling": " "254 },255 {256 "kind": "internalParam",257 "spelling": "Buzz"258 }259 ],260 "name": "Buzz"261 }262 ],263 "returns": [264 {265 "kind": "typeIdentifier",266 "preciseIdentifier": "c:t0.0",267 "spelling": "T"268 }269 ]270 },271 "identifier": {272 "interfaceLanguage": "c++",273 "precise": "c:@FT@>1#TFizz#I#t0.0#"274 },275 "kind": {276 "displayName": "Function Template",277 "identifier": "c++.func"278 },279 "location": {280 "position": {281 "character": 23,282 "line": 2283 },284 "uri": "file://INPUT_DIR/input.h"285 },286 "names": {287 "navigator": [288 {289 "kind": "identifier",290 "spelling": "Fizz"291 }292 ],293 "subHeading": [294 {295 "kind": "identifier",296 "spelling": "Fizz"297 }298 ],299 "title": "Fizz"300 },301 "pathComponents": [302 "Fizz"303 ],304 "swiftGenerics": {305 "parameters": [306 {307 "depth": 0,308 "index": 0,309 "name": "T"310 }311 ]312 }313 }314 ]315}316